2

こんにちは、GET リクエストを PHP に送信する際に問題があります。Web ブラウザで実行すると、同じ PHP が正常に動作します。PHP と Obj-C PHP の両方のコード スニペットを次に示します。

$var1=$_GET['value1'];
$var2=$_GET['value2'];

http://sample.com/sample.php?value1=hi&value2=welcomeのようにブラウザーでこれを呼び出すと、 正常に動作しますが、obj ci から成功しませんでした obj C

 NSString *url =[NSString stringWithFormat:@"http://sample.com/sample.php"];
    NSData *data = [@"sample.php" dataUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"%@",url);
    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    [req setHTTPMethod:@"GET"];
    [req setHTTPBody:data];
    NSURLConnection *connection = [[[NSURLConnection alloc] initWithRequest:req delegate:self]autorelease];
    [connection start];

助けてください?

4

1 に答える 1

5

問題は、(リクエスト オブジェクトを呼び出して) HTTPBody を設定することですがsetHTTPBody、GET リクエストには本文がありません。代わりに、渡されたデータを URL に追加する必要があります。したがって、ブラウザで行ったリクエストを模倣するには、次のようにします。

NSString *url =[NSString stringWithFormat:@"http://sample.com/sample.php?value1=hi&value2=welcome"];
NSLog(@"%@",url);
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[req setHTTPMethod:@"GET"]; // This might be redundant, I'm pretty sure GET is the default value
NSURLConnection *connection = [[[NSURLConnection alloc] initWithRequest:req delegate:self]autorelease];
[connection start];

もちろん、リクエストが有効であることを確認するために、クエリ文字列の値を適切にエンコードする必要があります (例についてはhttp://madebymany.com/blog/url-encoding-an-nsstring-on-iosを参照してください)。

于 2012-08-02T13:31:04.910 に答える