서버에 데이터를 게시하는 것은 처음입니다. 요청 형식이 있으며 요청을 보내려고하지만 오류 응답이 표시됩니다. 아래의 요청입니다 : JSON을 객관적인 c에 게시하는 방법은 무엇입니까?
{
jsonrpc : 2.0,
method : newPatient,
params : {
data : {
first_name : <string>,
middle_name : <string>, //optional
last_name : <string>, //optional
id_number : <string>, //optional
age : <int>, //optional
phone : <string>, //optional
city : <string>, //optional
country_id : <string>,
address_line : <string>, //optional
email : <string>,
password : <string> //hash
}
}
id : 0
}
나는 아래의 요청을하지만 서버에 게시 할 수 없습니다! 정확한 요청을 도와 줄 수 있습니까?
NSString *jsonRequest = [NSString stringWithFormat:@"{\n\"jsonrpc\":\"2.0\",\n\"method\":\"newPatient\",\n\"params\": { \n\"data\": {\n\"first_name\":\"%@\",\n\"country_id \":\"%@\",\n\"email\":\"%@\",\n\"password\":\"%@\"\n} \n}\n \"id\":\"0\"\n}",UserName.text,UserCountry.text,Emailtextview.text,Password.text];
NSLog(@"%@ jsonreq",jsonRequest);
jsonRequest = [NSString stringWithFormat:@"&json_data=%@",jsonRequest];
NSData *json_data = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: json_data];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[json_data length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:[[jsonRequest stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]
dataUsingEncoding:NSUTF8StringEncoding
allowLossyConversion:YES]];
NSURLConnection* passwordConnection = [NSURLConnection connectionWithRequest:request delegate:self];
NSLog(@"passconn%@",passwordConnection);
NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSLog(@"Res%@",responseData);
// NSData* result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err ];
NSString* ResultString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
//resultString is the returned buffer from calling the page
NSLog(@"error:%@", err);
NSLog(@"this is what the server sends:%@",Result
문자열);
는 Console의 jsonRequest 문자열 :
{
"jsonrpc":"2.0",
"method":"newPatient",
"params": {
"data": {
"first_name":"hh",
"country_id ":"Dd",
"email":"ss",
"password":"Dd"
}
}
"id":"0"
}
}
1) 서버에서 오류 응답을 받으면 질문에 오류 메시지를 추가해야합니다. - 2) JSON 요청이 유효하지 않습니다 (http://jsonlint.com에서 확인). - 3) "수동으로"JSON 데이터를 만드는 대신 NSJSONSerialization을 사용하십시오. –
Martin R이 답장을 보내 주셔서 감사합니다. JSON 요청이 jsonrequest 문자열이 올바르지 않아서 알 수없는 응답을 받았다고 생각하면 NSJSONSerialization을 작성하는 것이 nsdictionary이어야합니다! 문자열을 사전으로 변환하는 것을 도와 줄 수 있습니까? –