iPhoneアプリからPlayFrameworkのJavaアプリであり、HerokuCloudにデプロイされているサーバーにJSONを送信しています。
これが私のアプリで使用しているコードです。
self.url = [NSURL URLWithString:@"http://myURL.herokuapp.com/check/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSDictionary *dict = [[NSDictionary alloc]initWithObjects:[NSArray arrayWithObjects:@"Rajesh", @"pass", nil] forKeys:[NSArray arrayWithObjects:@"username", @"password", nil]];
NSString *jsonString = [dict JSONRepresentation];
NSLog(@"%@", jsonString);
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", data.description);
[request setHTTPMethod:@"POST"];
[request setHTTPBody:data];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
if(conn)
{
self.receivedData = [[NSMutableData alloc]init];
NSLog(@"%@", @"connection started");
}
これで、utf-8エンコーディングを使用してjsonStringをNSDataにエンコードしました。サーバー側でデコードする方法は?
奇妙な問題は、を使用してボディをフェッチしようとするとrequest.body().toString()
、次の出力が得られることです。
DefaultRequestBody(Some(Map()),None,None,None,None,None,false)
Androidアプリから同じ種類のリクエストを行ったとき、request().body().asJson()
メソッドを使用してさらに使用したJSONを取得しましたが、iOSでは、サーバーに送信する前にJsonをNSDataに変換しているため、どのようにすべきかについて少し混乱しています。サーバー側でデコードします。