发送POST请求Objective-C

发送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:

我需要向网站发送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: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
字典中的一个键。您的服务器应该知道并相应地发送数据。