尝试使用NSURL在objC中进行GET请求

安德鲁·SB

我正在尝试在iOS应用中提出此请求 在此处输入图片说明

我已经使用登录了网站NSURLConnection,以下代码位于完成处理程序中:

NSMutableURLRequest *requestGrades = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://mistar.oakland.k12.mi.us/novi/StudentPortal/Home/LoadProfileData/Assignments?_=1395809728907"]];
[requestGrades setHTTPMethod:@"GET"];
[NSURLConnection sendAsynchronousRequest:requestGrades queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *gradeResponse, NSData *gradeData, NSError *gradeError) {
    
    if ([gradeData length] > 0 && gradeError == nil) {
        NSLog(@"%@",requestGrades);
        NSLog(@"grade Response = %@ \ngrade Data = %@", gradeResponse, [[NSString alloc] initWithData:gradeData encoding:NSUTF8StringEncoding]);
    } else {
        NSLog(@"grade Error = %@", gradeError);
    }
}];

我在应用程序中得到的响应类似于:

grade Response = <NSHTTPURLResponse: 0x109627500> { URL: https://mistar.oakland.k12.mi.us/novi/StudentPortal/Home/LoadProfileData/Assignments?_=1395809728907 } { status code: 200, headers {
    "Cache-Control" = "public, max-age=0";
    Connection = "Keep-Alive";
    "Content-Length" = 234;
    "Content-Type" = "text/html; charset=utf-8";
    Date = "Wed, 26 Mar 2014 05:21:52 GMT";
    Expires = "Wed, 26 Mar 2014 05:21:52 GMT";
    "Last-Modified" = "Wed, 26 Mar 2014 05:21:52 GMT";
    Server = "Microsoft-IIS/7.5";
    Vary = "*";
    "X-AspNetMvc-Version" = "4.0";
    "X-Powered-By" = "ASP.NET";
} } 

如您所见,它与Chrome的响应不同(最明显的是Content-Length-我只有234的长度-我希望能得到31189之类的东西)。

Network在chrome开发人员工具部分中进行浏览,看看当我尝试请求数据时chrome的作用是:在此处输入图片说明

Chrome, when I click the button to fetch some data, makes 2 GET requests (the two pictures). The first one gets the data I'm trying to get for my app and the second which seems as if it doesn't really do anything. BUT the response the second chrome request is getting is the same response that I get when I try to make the first chrome request from iOS (the first picture, should return a Content-Length of 31189).

So I'm not sure what I'm doing wrong with my NSURLConnection.

Rob

Doing a little testing, i have confirmed that you have to do the following four NSURLConnection or NSURLSession requests:

  • Login at /novi/StudentPortal/Home/Login

  • Go to the portal page at /novi/StudentPortal/Home/PortalMainPage

  • Set the student banner /novi/StudentPortal/StudentBanner/SetStudentBanner/XXX, where XXX is the id value for the row associated with the particular student in the portal page

  • 从中请求分配novi/StudentPortal/Home/LoadProfileData/Assignments(不需要?_=xxxx参数;看起来像AjaxLoadJavascript用来跟踪请求,但是我们不必为此担心)

我注意到,如果您跳过这两个中间步骤之一,则分配请求将失败,如您的问题所示。(坦率地说,这使我对与之交互的系统中的一些设计选择提出疑问,但我认为您对此没有发言权。)但是,如果您全部执行这四个操作,则将获得与分配相关联的HTML。

顺便说一下,在解析此HTML时,您可能倾向于使用NSXMLParser正则表达式,但我建议您考虑使用Hpple(请参阅Ray Wenderlich的有关解析HTML文章)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在GET请求中进行for循环

来自分类Dev

无法在Scala中进行简单的GET请求

来自分类Dev

在Swift中进行异步GET / POST请求

来自分类Dev

在Swift中进行异步GET / POST请求

来自分类Dev

尝试使用get关键字在dart中进行设置和获取

来自分类Dev

使用objc的JSON请求

来自分类Dev

如何在OCaml中进行简单的GET请求?

来自分类Dev

使用用户输入在Java中进行尝试/捕获循环

来自分类Dev

使用CURL进行GET请求

来自分类Dev

使用Node.js异步请求在Redis中进行循环

来自分类Dev

使用QNetworkAccessManager在QT中进行HTTP POST请求

来自分类Dev

如何使用请求路径在Mule ESB中进行路由

来自分类Dev

使用Node.js异步请求在Redis中进行循环

来自分类Dev

如何使用ObjC类的std :: function回调在C ++中进行异步工作?

来自分类Dev

尝试在R中进行仿真

来自分类Dev

如何在 Java 中进行最多 4 次尝试的密码和用户请求?

来自分类Dev

在 SQL 请求中进行比较

来自分类Dev

如何使用PRAW在Python中进行除懒对象的尝试以外的尝试?

来自分类Dev

尝试使用节点请求进行身份验证

来自分类Dev

如何使用 NSURL 等待异步请求完成?

来自分类Dev

使用AFNetwork进行GET请求并保存响应

来自分类Dev

在Scala中进行尝试,验证和验证

来自分类Dev

尝试在PHP中进行复杂的搜索

来自分类Dev

在$ http.get请求中进行AJAX调用后,Angularjs不将变量存储到$ scope

来自分类Dev

在Android中进行翻新的OAuth 1.0请求

来自分类Dev

如何在haskell中进行json请求?

来自分类Dev

尝试使用异步,任务和等待在异步的MVC4中进行ValidationAttribute

来自分类Dev

mysqldump(Errcode:2)尝试使用Wildfly从Linux(服务器)中的Java中进行备份

来自分类Dev

尝试使用 MSVSMON 在 VS2017 中进行远程调试时出错

Related 相关文章

  1. 1

    在GET请求中进行for循环

  2. 2

    无法在Scala中进行简单的GET请求

  3. 3

    在Swift中进行异步GET / POST请求

  4. 4

    在Swift中进行异步GET / POST请求

  5. 5

    尝试使用get关键字在dart中进行设置和获取

  6. 6

    使用objc的JSON请求

  7. 7

    如何在OCaml中进行简单的GET请求?

  8. 8

    使用用户输入在Java中进行尝试/捕获循环

  9. 9

    使用CURL进行GET请求

  10. 10

    使用Node.js异步请求在Redis中进行循环

  11. 11

    使用QNetworkAccessManager在QT中进行HTTP POST请求

  12. 12

    如何使用请求路径在Mule ESB中进行路由

  13. 13

    使用Node.js异步请求在Redis中进行循环

  14. 14

    如何使用ObjC类的std :: function回调在C ++中进行异步工作?

  15. 15

    尝试在R中进行仿真

  16. 16

    如何在 Java 中进行最多 4 次尝试的密码和用户请求?

  17. 17

    在 SQL 请求中进行比较

  18. 18

    如何使用PRAW在Python中进行除懒对象的尝试以外的尝试?

  19. 19

    尝试使用节点请求进行身份验证

  20. 20

    如何使用 NSURL 等待异步请求完成?

  21. 21

    使用AFNetwork进行GET请求并保存响应

  22. 22

    在Scala中进行尝试,验证和验证

  23. 23

    尝试在PHP中进行复杂的搜索

  24. 24

    在$ http.get请求中进行AJAX调用后,Angularjs不将变量存储到$ scope

  25. 25

    在Android中进行翻新的OAuth 1.0请求

  26. 26

    如何在haskell中进行json请求?

  27. 27

    尝试使用异步,任务和等待在异步的MVC4中进行ValidationAttribute

  28. 28

    mysqldump(Errcode:2)尝试使用Wildfly从Linux(服务器)中的Java中进行备份

  29. 29

    尝试使用 MSVSMON 在 VS2017 中进行远程调试时出错

热门标签

归档