0

ばかげた質問で申し訳ありませんが、私はそれに夢中になっています:(

jSon を iOS フロントエンドから POST 経由で symfony2 ベースのサーバーに送信しようとしています。

何が間違っているのかわかりませんが、POST には何もありません。

フロントエンドのコードは次のとおりです。

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 :-(");
                }
            }
);
}); 

アドバイスをいただければ幸いです。

4

1 に答える 1

0

タイプミスがあります。jsonDataを使用しないでください。jsonStringを使用する

[request setHTTPBody:jsonString];
于 2013-01-11T13:03:29.027 に答える