在ios中通过POST向symfony2服务器发送json
对不起,我问了个愚蠢的问题,但我已经被这个问题弄疯了:( 我试图通过POST将jSon从iOs前端发送到基于symfony2的服务器 我不知道我做错了什么,但是帖子里什么也没有 以下是前端代码:在ios中通过POST向symfony2服务器发送json,ios,objective-c,json,post,symfony,Ios,Objective C,Json,Post,Symfony,对不起,我问了个愚蠢的问题,但我已经被这个问题弄疯了:( 我试图通过POST将jSon从iOs前端发送到基于symfony2的服务器 我不知道我做错了什么,但是帖子里什么也没有 以下是前端代码: NSMutableDictionary* objeto = [NSMutableDictionary dictionary]; [objeto setValue:[NSNumber numberWithInt:2] forKey:@"cliente"]; [objeto setValue:[NSNumb
NSMutableDictionary* objeto = [NSMutableDictionary dictionary];
[objeto setValue:[NSNumber numberWithInt:2] forKey:@"cliente"];
[objeto setValue:[NSNumber numberWithInt:3] forKey:@"usuario"];
[objeto setValue:[NSNumber numberWithInt:4] forKey:@"producto"];
[objeto setValue:[NSNumber numberWithInt:100] forKey:@"cantidad"];
NSLog(@"objeto %@", [objeto JSONRepresentation]);
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:objeto options:kNilOptions error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"JSON String: %@",jsonString);
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:@"http://xxx.com/nueva_venta"]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:jsonData];
NSURLConnection *connection = [[[NSURLConnection alloc] initWithRequest:request delegate:self]autorelease];
if(connection)
{
recibeData = [NSMutableData data];
}
例如,如果我在服务器端执行此操作:
/**
* Prueba de nueva venta
* @Route("/nueva_venta", name="nueva_venta")
* @Method("POST")
*/
public function nuevaVenta(){
$request= Request::createFromGlobals();
return new Response(json_encode($request->request->all()));
}
我得到一个空的json:(
如果改为通过Javascript执行请求,则效果良好:
$(document).ready(function() {
var venta=new Venta();
venta.cliente=10;
venta.usuario=1;
venta.producto=11;
venta.cantidad=100;
var capsulaJson={"cliente": venta.cliente,
"usuario":venta.usuario,
"producto":venta.producto,
"cantidad":venta.cantidad};
var json=capsulaJson.toString();
$.post("http://xxx.com/nueva_venta", json,
function (datos) {
if (datos) {
alert(datos);
}
else {
alert("No funciona :-(");
}
}
);
});
任何建议都将不胜感激。您有输入错误..不要使用jsonData。请使用jsonString
[request setHTTPBody:jsonString];
我怀疑你需要将内容类型设置为
application/json
。你成功了吗?我遇到了完全相同的问题。你还记得你做了什么吗?谢谢!