发送POST请求Objective-C
我需要向网站发送POST请求以加载更多页面结果(我想解析大约200个结果(使用TFHpple),但页面仅显示40个,您需要单击按钮上的“显示更多结果”以加载更多结果) 我试图在网上搜索如何发送发帖请求,但没有成功:(有人能帮我弄清楚吗 一般资料:发送POST请求Objective-C,objective-c,post,tfhpple,Objective C,Post,Tfhpple,我需要向网站发送POST请求以加载更多页面结果(我想解析大约200个结果(使用TFHpple),但页面仅显示40个,您需要单击按钮上的“显示更多结果”以加载更多结果) 我试图在网上搜索如何发送发帖请求,但没有成功:(有人能帮我弄清楚吗 一般资料: Remote Address:212.117.156.55:80 Request URL:http://www.d.co.il/DOTNET/ajax/GetMoreResults Request Method:POST Status Code:
Remote Address:212.117.156.55:80
Request URL:http://www.d.co.il/DOTNET/ajax/GetMoreResults
Request Method:POST
Status Code:200 OK
File Name: GetMoreResults
如果需要其他信息,请来信,我会给你的
多谢各位
我做得对吗?
NSURL *url=[NSURL URLWithString:@"http://www.d.co.il/SearchResults/?query=%D7%A9%D7%95%D7%A4%D7%A8%D7%A1%D7%9C&type=tag&location="];
NSData *data=[NSData dataWithContentsOfURL:url];
TFHpple *parser=[TFHpple hppleWithHTMLData:data];
NSString *XpathQueryString=@"//p[contains(@class, \"result-contact-address\")]";
NSArray *Nodes=[parser searchWithXPathQuery:XpathQueryString];
NSError *error;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSURL *postUrl = [NSURL URLWithString:@"http://www.d.co.il/DOTNET/ajax/GetMoreResults"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:postUrl
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request addValue:@"GetMoreResults" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"GetMoreResults" forHTTPHeaderField:@"Accept"];
[request setHTTPMethod:@"POST"];
NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys: @"1", @"batchNumber",
@"IOS TYPE", @"typemap",
nil];
NSData *postData = [NSJSONSerialization dataWithJSONObject:mapData options:0 error:&error];
[request setHTTPBody:postData];
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
}];
[postDataTask resume];
int i=1;
for (TFHppleElement *element in Nodes) {
NSString *address = element.text;
NSLog(@"%@,%d",address,i);
i++;
}
嗯,你投了反对票(不是我的:))是有原因的——这是非常基本的东西,你只要花2分钟认真上网就能得到很多信息:)
我想在这里给你一个方向,因为你想实现“显示更多”功能:
步骤1:您需要构建一个服务,该服务接受批次号
并向您提供属于该批次的数据。所以,最初您将发送batchNumber=0
,服务器将返回前40条记录
第2步:在UI端,返回比您手头要显示的数据记录数多1个计数。该额外计数用于最后一个单元格显示更多内容
步骤3:点击显示更多内容,将当前的批次号增加1,并进行服务器调用以获取下一批记录
步骤4:在加载所有记录之前继续步骤2和3
最后,这是使用post请求加载服务器数据的方式:
NSError *error;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSURL *url = [NSURL URLWithString:@"[JSON SERVER"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPMethod:@"POST"];
NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys: @"TEST IOS", @"name",
@"IOS TYPE", @"typemap",
nil];
NSData *postData = [NSJSONSerialization dataWithJSONObject:mapData options:0 error:&error];
[request setHTTPBody:postData];
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
}];
[postDataTask resume];
我理解我共享的代码,所以这部分看起来不错。我不知道你们为什么要从服务器上获取数据,解析和登录控制台。此外,正如我所建议的,您需要构建此处缺少的batchNumber
逻辑。我希望获取所有地址并将其插入NSMutableArray(例如,在这里,我只是在日志中打印它)。我应该在何处插入此batchNumber?你能给我举一个我在帖子中提供的信息的例子吗?谢谢那没关系。但是添加batchNumber
逻辑。batchNumber
应该进入mapData
字典中的一个键。您的服务器应该知道并相应地发送数据。