[英]How can i post json string to server
这是我必须发布的json字符串...
{
"data": {
"description": "",
"current_value": "",
"serialno": "",
"condition": "",
"category": "category",
"purchase_value": "",
"new_or_used": "",
"gift_or_purchase": "",
"image": ""
},
"subtype": "fd3102d8-bc19-424b-bca2-774a8fd7ea6f"
}
如何发布为JSON?
当然,这是一个重复的问题,但这是完整的示例代码,作为一个长例程。 只需复制并粘贴。
首先设置JSON ...
-(void)sendTestJsonCommand
{
NSMutableDictionary *dict = @{
@"heights":@"4_5_7",
@"score":@"4",
@"title":@"Some Title",
@"textBody":@"Some Long Text",
@"happy":@"y"
}.mutableCopy;
NSError *serr;
NSData *jsonData = [NSJSONSerialization
dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&serr];
if (serr)
{
NSLog(@"Error generating json data for send dictionary...");
NSLog(@"Error (%@), error: %@", dict, serr);
return;
}
NSLog(@"Successfully generated JSON for send dictionary");
NSLog(@"now sending this dictionary...\n%@\n\n\n", dict);
接下来,正确异步地将命令和json发送到您的服务器...
#define appService [NSURL \
URLWithString:@"http://www.corp.com/apps/function/user/pass/id/etc"]
// Create request object
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:appService];
// Set method, body & content-type
request.HTTPMethod = @"POST";
request.HTTPBody = jsonData;
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:
[NSString stringWithFormat:@"%lu",
(unsigned long)[jsonData length]] forHTTPHeaderField:@"Content-Length"];
// you would almost certainly use MBProgressHUD at this point
// to display some sort of spinner or similar action on the UX
最后,(A)使用NSURLConnection正确连接,并且(B)正确解释从服务器返回给您的信息。
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *r, NSData *data, NSError *error)
{
if (!data)
{
NSLog(@"No data returned from server, error ocurred: %@", error);
NSString *userErrorText = [NSString stringWithFormat:
@"Error communicating with server: %@", error.localizedDescription]
return;
}
NSLog(@"got the NSData fine. here it is...\n%@\n", data);
NSLog(@"next step, deserialising");
NSError *deserr;
NSDictionary *responseDict = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&deserr];
NSLog(@"so, here's the responseDict\n\n\n%@\n\n\n", responseDict);
// LOOK at that output on your console to learn how to parse it.
// to get individual values example blah = responseDict[@"fieldName"];
}];
}
希望它可以节省一些键入的时间!
使用以下同步请求,也可以使用异步请求,
NSError *error;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:<Your API URL>]];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:<Your Mutable NSDictionary> options:NSJSONReadingMutableContainers error:&error];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:jsonData];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//NSLog(@"results string = %@",[[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]);
NSDictionary *temp= [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];// This will convert Data to Json format
更换:
NSData *postData = [jsonString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
附:
NSError *error;
NSData *postdata = [NSJSONSerialization dataWithJSONObject:jsonString options:0 error:&error];
可能转换为JSON的对象必须具有以下属性:
NSData * postData = [NSJSONSerialization dataWithJSONObject:Data options:0 error:&error];
if (!error)
{
NSString *urlpart = [NSString stringWithFormat:@“Your URL];
NSURL *requestUrl = [NSURL URLWithString:urlpart];
NSMutableURLRequest *URLRequest = [NSMutableURLRequest requestWithURL:requestUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
URLRequest.allowsCellularAccess=YES;
[URLRequest setHTTPMethod:@"POST"];
[URLRequest setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[URLRequest setHTTPBody:postData];
WebServiceManager *webserviceManager = [[WebServiceManager alloc] init];// this is your comman class for webServices connections
[webserviceManager sendRequest:URLRequest withOwner:self successAction:@selector(delegateMethod:) failAction:@selector(Error:)];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.