11

AFNetworkingフレームワークを使用しており、フォーム(POST)リクエストをサーバーに送信する必要があります。サーバーが期待するもののサンプルを次に示します。

<form id="form1" method="post" action="http://www.whereq.com:8079/answer.m">
    <input type="hidden" name="paperid" value="6">
    <input type="radio" name="q77" value="1">
    <input type="radio" name="q77" value="2">
    <input type="text" name="q80">
</form> 

AFNetworkingを使用した複数の画像の送信の投稿で説明したのと同じように、AFHTTPClientでmultipartFormRequestWithMethodを使用することを検討します。しかし、フォームデータに「ラジオ」タイプの入力値を追加する方法がわかりません。

4

3 に答える 3

24

NSURLConnectionを使用してPOSTパラメーターを送信する例を次に示します。

// Note that the URL is the "action" URL parameter from the form.
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.whereq.com:8079/answer.m"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
//this is hard coded based on your suggested values, obviously you'd probably need to make this more dynamic based on your application's specific data to send
NSString *postString = @"paperid=6&q77=2&q80=blah";
NSData *data = [postString dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
[request setValue:[NSString stringWithFormat:@"%u", [data length]] forHTTPHeaderField:@"Content-Length"];
[NSURLConnection connectionWithRequest:request delegate:self];
于 2012-09-30T13:56:40.593 に答える
5

このフォームを使用するときに(ブラウザーのデバッグパネルを使用して)ブラウザーがサーバーに送信する内容を確認すると、POSTリクエストデータは次のようになります。

paperid=6&q77=2&q80=blah

つまり、選択したラジオボタンの値エントリが対応するPOSTエントリの値として使用され、すべてのラジオボタンに対して1つのエントリのみが取得されます。(現在選択されているそれぞれの値を取得するトグルボタンとは対照的です。)

POST文字列の形式を理解すると、 ASIFormDataRequestを使用して通常の方法でリクエストを作成できるようになります。

于 2012-09-30T07:05:34.407 に答える
2

STHTTPRequestの使い方は次のとおりです

STHTTPRequest *r = [STHTTPRequest requestWithURLString:@"http://www.whereq.com:8079/answer.m"];

r.POSTDictionary = @{ @"paperid":@"6", @"q77":"1", @"q80":@"hello" };

r.completionBlock = ^(NSDictionary *headers, NSString *body) {
    // ...
};

r.errorBlock = ^(NSError *error) {
    // ...
};

[r startAsynchronous];
于 2012-10-01T12:44:19.147 に答える