-1

ページのより多くの結果を読み込むために、Web サイトに POST 要求を送信する必要があります ((TFHpple を使用して) 解析したい約 200 の結果がありますが、ページには 40 しか表示されないため、[結果をさらに表示] をクリックする必要があります。ボタンをクリックしてさらにロードします)。

POSTリクエストを送信する方法をWebで検索しようとしましたが、成功しませんでした:(誰かが私を理解するのを手伝ってくれますか?

一般情報:

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++;
}
4

1 に答える 1

1

まあ、あなたは反対票を投じました(私からではありません:))理由があります-これはかなり基本的なものであり、わずか2分間の真剣なオンラインサーフィンで多くの情報を得ることができます:)!

「もっと見る」機能を実装したいので、ここで方向性を示します。

ステップ 1 :batchNumberそのバッチに属するデータを受け取り、フィードするサービスを構築する必要があります。したがって、最初に送信するbatchNumber = 0と、サーバーは最初の 40 レコードを返します。

ステップ 2 : UI 側で、表示するデータ レコードの数よりも 1 カウント多い数を返します。その追加のカウントは、最後のセルShow Moreに対するものです。

ステップ 3 : [ Show More ] をタップして、現在の値を 1 増やしbatchNumber、サーバーを呼び出して次のバッチ レコードを取得します。

ステップ 4 :すべてのレコードがロードされるまで、ステップ 2 と 3 を続行します。

最後に、これはポスト リクエストを使用してサーバー データをロードする方法です。

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];
于 2015-10-26T10:54:23.437 に答える