我的NSArray里面有NSDictionaries。我需要发布JSON。所以我尝试用NSURLConnection发出帖子请求,但是我给了一个错误(坏网址)。 我转换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
}
]
如果我试着发布这个,我会收到错误“坏网址”。 这就是我尝试编码的原因:
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
它发送良好,但数据错误,无法正常工作。
答案 0 :(得分:0)
您可以使用以下代码轻松地将NSDictionary转换为JSON字符串:
NSString* jsonString = [jsonDictionary JSONRepresentation];
然后创建一个NSData对象:
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
答案 1 :(得分:0)
如果你想“POST”,你需要添加json作为请求体。当量:
[request setHTTPBody:(NSData *)];