0

サーバーからデータを取得するために、次の詳細があります。methodIdentifierとWebサービス名の用途は何ですか?

{"zip":"12345","methodIdentifier":"s_dealer"}

url:- http://xxxxxxxxxxxxxxx.com/api.php
method: post
web service name: s_dealer

response : {"success":"0","dealer":[info...]}

URLでzip番号「12345」を送信する方法がわかりません。正しい方向に私を向けてください。私は以下を使用します。

-(void)IconClicked:(NSString *)zipNumber 
{


NSString *post = [NSString stringWithFormat:@"&zipNumber=%@",zipNumber];



NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];

[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://xxxxxxxxxxxxxxxxxxx.com/api.php"]]];

[request setHTTPMethod:@"POST"];

[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

[request setHTTPBody:postData];

NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];

if(conn)
{
    NSLog(@"Connection Successful");
}
else
{
    NSLog(@"Connection could not be made");
}

  receivedData = [[NSMutableData alloc]init];


}

コンソールで応答を出力すると:\"予期しない文字列の終わり\"

4

3 に答える 3

0

API について詳しくわからないため、お客様の要件について確信を持てませんが、サーバーはリクエストに JSON が含まれていることを期待しているようです。現在リクエストの本文を作成している方法は、標準の POST 変数を使用することです。

変更してみましたか:

NSString *post = [NSString stringWithFormat:@"&zipNumber=%@",zipNumber];

に:

NSString *post = [NSString stringWithFormat:@"{\"zip\":\"%@\",\"methodIdentifier\":\"s_dealer\"}",zipNumber];

他の質問についてですが、API の URL は 1 つだけだと思います。はmethodidentifier、実行するサーバー メソッドを決定するためにサーバーによって使用されます。

于 2012-07-10T13:27:09.623 に答える
0

このエラーが発生するのは、応答として json を取得しないためですが、構造が異なる Apache (またはその他のもの) からのエラーであり、json はそれを解析できません。接続を成功させるために、接続を開始する私の方法を試してください。

NSURLConnection プロパティを宣言して合成します。今:

NSString *post = [NSString stringWithFormat:@"zipNumber=%@",zipNumber];

    NSString *toServer = [NSString stringWithString:@"your server with the last slash character"];

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@api.php?", toServer]];
    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    NSMutableURLRequest *urlRequest = [[[NSMutableURLRequest alloc] init] autorelease];
    [urlRequest setURL:url];
    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [urlRequest setValue:@"utf-8" forHTTPHeaderField:@"charset"];
    [urlRequest setHTTPBody:postData];
    [urlRequest setTimeoutInterval:30];

    NSURLConnection *tmpConn = [[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self] autorelease];

    self.yourConnectionProperty = tmpConn;

これで、接続デリゲートで self.yourConnectionProperty を操作できます。乾杯!

于 2012-07-10T13:28:56.377 に答える
0

同じ問題について私の答えを確認してください...データを取得するには、NSURLConnectionデリゲートを使用する必要があります

Iphone から Json リクエストの本文を作成できませんでした

于 2012-07-10T13:48:32.493 に答える