2

へー、

NSURLRequest HTTP POST で問題が発生しましたが、何が問題なのかわかりません。

これは私のサーバー側のphpです:

<html>
<head>
</head>
<body>
    <?php 
        if (! isset($_POST['sometext'])) {
            echo "NOT SET";
        } else {
            echo $_POST['sometext'];
        }
    ?>
</body></html>

これは、データを投稿するための私の目的の c コードです。

NSString *urlString = @"http://localhost:8888/postpage";
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSMutableURLRequest *urlRequest=[NSMutableURLRequest requestWithURL:url];

[url release];


    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
    [urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
    NSString *postString = @"sometext=Hello&language=en";
    NSString *msgLength = [NSString stringWithFormat:@"%d", [postString length]];
    [urlRequest setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];


NSString *returnString = [[NSString alloc] initWithData:[NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil] encoding:NSUTF8StringEncoding];
NSLog(@"%@",returnString);

NSLog の結果は次のとおりです。

<html>
    <head>
    </head>
    <body>
        NOT SET 
    </body>
</html>

もうありがとう

4

3 に答える 3

4

何度か同じ問題に遭遇しましたが、解決策はこれをリクエストに追加することでした:

[urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
于 2011-03-21T13:55:00.540 に答える
2

問題の原因として考えられるのは、値をmsgLength変数に割り当てる前に、コード内でContent-Lengthヘッダーを設定しているという事実です。nil オブジェクトの ob Obj-C メソッドは nil (nil は 0) を返すため、Content-Lenght を 0 に設定しています。

NSString *msgLength = [NSString stringWithFormat:@"%d", [postString length]];

[urlRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
于 2011-03-21T16:38:35.620 に答える
0

ASIHTTPRequest Libraryを試すことをお勧めします。問題のように http リクエストを簡単に処理できるだけでなく、 ASIFormDataRequestを使用するだけでなく、非同期処理も簡単です。

于 2011-03-21T14:04:36.550 に答える