0

こんにちは皆さん、私はNSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil]コマンドを使用してjsonを記述しています。見た目は問題なく、Railsサーバーに投稿しても「名」はまだ残っています。誰も助けることができます

NSArray *objects = [NSArray arrayWithObjects:@"firstname", @"lastname",nil];
NSArray *keys = [NSArray arrayWithObjects:@"dave", @"lu", nil];
NSDictionary *questionDict = [NSDictionary dictionaryWithObjects:keys forKeys:objects];


NSArray *objects2 = [NSArray arrayWithObjects:@"utf8", 
                                @"authenticity_token",@"check_i_ndatum", @"commit",nil];
NSArray *keys2 = [NSArray arrayWithObjects:@"1", @"xx",questionDict,@"Create Check i 
                                                                          Nadtum", nil];
NSDictionary *jsonDict = [NSDictionary dictionaryWithObjects:keys2 forKeys:objects2];

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict 
                                          options:NSJSONWritingPrettyPrinted error:nil];


NSURL * url =[NSURL URLWithString:@"http://192.168.1.105:3000/check_i_ndata"];
 //the request

NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url    
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
//bind req w/ json
[request setHTTPMethod:@"POST"];
//[request setValue:@"check_i_ndata" forHTTPHeaderField:@"Accept"];
[request setValue:[NSString stringWithFormat:@"%d",[jsonRequestData length]] 
forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:jsonRequestData];

NSURLResponse * response = nil;
NSError *error =nil;
NSData *reslut =[NSURLConnection sendSynchronousRequest:request 
returningResponse:&response error:&error];

出力->>>>xcodeで

  {
  "commit" : "Create Check i Nadtum",
  "authenticity_token" : "xx",
  "utf8" : "1",
  "check_i_ndatum" : {
    "firstname" : "dave",
    "lastname" : "lu"
  }
}

出力->>>オンレールサーバー

Started POST "/check_i_ndata" for 192.168.1.100 at 2012-07-29 10:25:37 -0700
Processing by CheckINdataController#create as */* 
Parameters: {"{\n  \"commit\" : \"Create Check i Nadtum\",\n \"authenticity_token\" : 
\"xx\",\n  \"utf8\" : \"1\",\n\"check_i_ndatum\" : {\n    \"firstname\" : \"dave\",\n
\"lastname\" : \"lu\"\n  }\n}"=>nil}

このように見える必要があります->>>Railsサーバーで

{"utf8"=>"✓", "authenticity_token"=>"XtLdI2lWSfO6OL8OwZ9Kai+Cm7hFe16EH50zPfheGbs=",
"check_i_ndatum"=>{"firstname"=>"sdf", "lastname"=>"asdf",
"medicalID"=>"adsf", "checkedInDate(1i)"=>"2012",
"checkedInDate(2i)"=>"7", "checkedInDate(3i)"=>"29",
"checkinTime(1i)"=>"2012", "checkinTime(2i)"=>"7",
"checkinTime(3i)"=>"29", "checkinTime(4i)"=>"08",
"checkinTime(5i)"=>"40"}, "commit"=>"Create Check i ndatum"}
4

1 に答える 1

5

投稿リクエストにコンテンツ タイプを設定していないため、通常の形式でエンコードされた投稿として解釈されてしまいます。

application/json のようなものに設定された Content-Type ヘッダーを追加すると、Rails がリクエストを json として解析するようになります

たとえば、上記のコードに関しては、次のようになります。

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
于 2012-07-29T17:46:58.683 に答える