2011-09-30 4 views
0

私はjsonstringを送信するためにjson Frameworkを使用しています。私のJSONのポスト文字列は、私ははjsonにpostStringを送信できません

NSString *postString = [NSString stringWithFormat:@"[\"firstName\":\"barani\",\"lastName\":\"Tharn\",\"contactSource\":\"Leter\",\"permanentAddress\":{},\"deliveryAddress\":{},\"preferredContactTimes\":[]]",fName.text,lName.text,contactSource.text,address,address,add]; 

NSURL *purchaseURL = [NSURL URLWithString:@"http://localhost/Cali/addContact"]; 
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:purchaseURL]; 

NSData *requestData = [NSData dataWithBytes:[postString UTF8String] length:[postString length]]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody:requestData];//[postString dataUsingEncoding:NSUTF8StringEncoding]]; 
NSLog(@"post String :%@",[[NSString alloc] initWithData:requestData encoding:NSASCIIStringEncoding]); 
NSURLConnection *purchaseConn =[[NSURLConnection alloc] 
           initWithRequest:request 
           delegate:self]; 

if (purchaseConn) { 
    NSLog(@"connection!!!"); 
    webData = [[NSMutableData data] retain]; 
} 

と関連して......

{ 
    "firstName": "string1", 
    "lastName": "string2", 
    "contactSource": "Leter", 
    "permanentAddress": {}, 
    "deliveryAddress": {}, 
    "preferredContactTimes": [] 
} 

コーディングされた仕上がりロード

ここ
NSString *jsonString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding]; 
NSLog(@"hai:%@",[[NSString alloc] initWithData:webData encoding:NSASCIIStringEncoding]); 

NSDictionary *jsonValue = [jsonString JSONString]; 
NSLog(@"output:%@",jsonValue); 

permanentAddressともdeliveryAddressサブJSON文字列をしましたadn preferredContactTimesは配列

私はjson失敗したerro r

JSONValueに失敗しました。エラートレースは次のとおりです。( "エラードメイン= org.brautaset.JSON.ErrorDomainコード= 11 \" 文字列\の予期しない終了 "のUserInfo = 0x4c8d820 {文字列のNSLocalizedDescription =予期しない終了}" )

お願いします私の解決策

+0

jsonの形式は正しいです。選択したjsonフレームワークを正しく使用するようにしてください。また、本当にサポートが必要な場合は、さらに詳しい情報を提供してください。 – makaron

答えて

0

あなたの問題を引き起こしているのかどうかは不明ですが、あなたの名前や他のテキストフィールドに非ASCII文字が含まれている場合は特にそうかもしれません。あなたのようなあなたのNSDataを作成します。

NSData *requestData = [NSData dataWithBytes:[postString UTF8String] length:[postString length]]; 

[postString UTFString]あなたの文字列はバイトのゼロで終わるバッファに変換されます。その文字列にASCII以外の文字がある場合、そのバッファの長さは文字数より長くなります。したがって、文字列の文字数が10の場合、バイト数は少なくとも11(nilターミネータの場合は1バイト)になり、場合によってはそれ以上になります。

次に、バッファの長さが文字列の長さと等しいことをNSDataに伝えます。したがって、[postString UTF8String]の結果が長ければ、切り詰められたバッファを取得して解析することができます。

は、代わりにこれをやってみてください。私は、Webサービスの開発者と議論し、それが発生した問題を....見つかったすべての

NSData *requestData = [postString dataUsingEncoding:NSUTF8StringEncoding] 
0

感謝を。彼は私が送る形式は正しいと言いました。しかし、サーバー側では、マッピングを作成するため、ジャンク値が自動的に作成されます。だから彼らは今私のために新しいものを作っています...

ありがとう

関連する問題