0

POST NSURLRequest を作成する必要があり、リクエストに次の構造を渡す必要があります。

  • 検査 (文字列のキーと値を持つ NSDictionaries の配列)
  • プロパティ (array1 と同じ構造)
  • サブカテゴリ (各辞書が特定のキーの値の配列を持つことができる NSDictionaries の配列)

すべてを連結した後の requestString は次のようになります。

?inspection[name]=inspection_name&inspection[address]=address_value&...&property[type]=property_type&....&subcategories[0][questions][0][title]=title_value&subcategories[0][questions][1][title]=title_value1&...&subcategories[1][questions][0][title]=title_valuen&...

検査とプロパティ配列についても試しましたinspection[][name]=inspection_name, property[][address]=property_address

その requestString を形成している間、次のメソッドを使用して各パラメーターをエスケープしています。

static NSString *escapeParam(NSString *param) {
param = [param stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
param = [param stringByReplacingOccurrencesOfString:@"&" withString:@"%26"];
param = [param stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"];
param = [param stringByReplacingOccurrencesOfString:@"?" withString:@"%3F"];
return param;

}

そのため、次のようなものにsubcategories[0][questions][0][title]=title_valueなりますsubcategories%5B0%5D%5Bquestions%5D%5B0%5D%5Btitle%5D=title_value

明らかに、私は何か間違ったことをしており、この requestString を適切に形成する方法がわかりません。これは、リクエストを発行すると、応答で HTTP エラー 400 の不正なリクエストが返されるためです。

誰かが私を正しい方向に向けることができますか?

本当にありがとう!

4

1 に答える 1

1

まず &、、、=?エンコードする必要はありません。これらの文字はサポートされています。

次に、stringByAddingPercentEscapesUsingEncoding本文全体に追加する必要はありません。サーバーはエスケープ文字をサポートする必要があるため、追加する必要はまったくないと思います。サーバーが文字のエスケープをサポートしていない場合はstringByAddingPercentEscapesUsingEncoding、値にのみ適用する必要があります。キーは次のようにする必要があります。

inspection[][name]=[inspection_name stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

これにより、値からの最終的なエスケープ文字が処理されますが、キーはサーバー上で機能するように作成されているため、エスケープ文字を含めることはできません。

于 2013-05-17T12:15:53.657 に答える