0

内部に NSDictionaries を含む NSArray があります。JSONを投稿する必要があります。そこで、NSURLConnection でポスト リクエストを作成しようとしましたが、エラー (不正な URL) が表示されました。私は NSArray をそのような方向に変換します:

NSData *dishesData = [NSJSONSerialization dataWithJSONObject:dishes options:NSJSONWritingPrettyPrinted error:&error];
NSString *dishesString = [[NSString alloc] initWithData:dishesData encoding:NSUTF8StringEncoding];

次に、リクエストで NSString に貼り付けます。

NSString *requestString = [NSString stringWithFormat:@"%@%@=%@&%@=%@&%@=%@&%@=%@&%@=%@&%@=%@&%@=%@", SERVER_ADDRESS, ACTION, ORDER_ACTION, ORDER_NAME, name, ORDER_EMAIL, email, ORDER_PHONE, phone, ORDER_DELIVERY, delivery, ORDER_ADDRESS, address, ORDER_DISHES, dishesString];

次に、初めてログに記録します:

2013-09-17 20:01:13.926 Eda.by[3088:c07] http://eda.by/api.php?act=order&name=Тимур&email=bernikowich@testemail2.com&phone=+375296802009&delivery=1&address=Тестовый адрес!&dish=[
  {
    "count" : 2,
    "id" : 86
  }
]

これを投稿しようとすると、「bad url」というエラーが表示されます。そのため、次の方法でこれをエンコードしようとします。

requestString = [requestString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

その後、次のようなログを取得します。

http://eda.by/api.php?act=order&name=%D0%A2%D0%B8%D0%BC%D1%83%D1%80&email=bernikowich@testemail2.com&phone=+375296802009&delivery=1&address=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B0%D0%B4%D1%80%D0%B5%D1%81!&dish=%5B%0A%20%20%7B%0A%20%20%20%20%22count%22%20:%202,%0A%20%20%20%20%22id%22%20:%2086%0A%20%20%7D%0A%5D

うまく送信されますが、データが間違っていて動作しません。

4

2 に答える 2