我正在尝试在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这样的东西。)
在Chrome开发人员工具的Network
部分中,查看我尝试请求数据时Chrome执行的操作是:
Chrome,当我点击按钮获取一些数据时,会发出2 GET
个请求(两张图片)。第一个获取我试图为我的应用程序获取的数据,第二个看起来好像它没有真正做任何事情。但是,当我尝试从iOS发出第一个chrome请求时,第二个chrome请求获得的响应与我得到的响应相同(第一张图片应返回31189的Content-Length
)。
所以我不确定我的NSURLConnection
。
答案 0 :(得分:0)
进行一些测试,我确认您必须执行以下四个NSURLConnection
或NSURLSession
次请求:
登录/novi/StudentPortal/Home/Login
转到/novi/StudentPortal/Home/PortalMainPage
设置学生横幅/novi/StudentPortal/StudentBanner/SetStudentBanner/XXX
,其中XXX
是与门户网站页面中特定学生相关联的行的id
值
从novi/StudentPortal/Home/LoadProfileData/Assignments
请求分配(不需要?_=xxxx
个参数;看起来像AjaxLoad
使用Javascript来跟踪请求,但我们不会这里不得不担心)
我注意到,如果您跳过这两个中间步骤中的任何一个,则分配请求将失败,如您的问题所示。 (坦率地说,这让我质疑你与之交互的系统中的一些设计选择,但我认为你对此没有发言权。)但如果你做了所有这四个,你就会得到与之相关的HTML与作业。
顺便说一下,在解析这个HTML时,你可能倾向于使用NSXMLParser
或正则表达式,但我建议你考虑Hpple(参见Ray Wenderlich&#39; s article on parsing HTML )。