gpt4 book ai didi

ios - 如何使用以 NSString 作为参数的 setHTTPBody 方法?

转载 作者:行者123 更新时间:2023-11-28 20:04:08 25 4
gpt4 key购买 nike

我必须使用一个采用 HTTP Body 格式的网络服务,如下所示

{
"ScreenID" : "screenID1",
"DeviceID" : "E7EF8DCE-CE8A-4F0C-BBC5-F080C29FEF29",
"SessionStartTime" : "2014-03-27T06:50:15",
"SessionEndTime" : "2014-03-27T06:50:15"
}

现在当我使用 NSMutableURLRequest 实例时它以 NSData 实例作为参数

代码如下:-

NSMutableURLRequest *request = [[NSMutableRequest alloc] initWithURL:@"someurl"]
[request setHTTPMethod:@"POST"];

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

[request setValue:cipher forHTTPHeaderField:@"Cipher"];

NSData *jsonData;
if ([NSJSONSerialization isValidJSONObject:dict]) {
NSError *error;
jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
if (!jsonData) {

NSLog(@"json Data %@",error.description);

} else {

NSString *JSONString = [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding];

NSLog(@"JSON String %@",JSONString);//[JSONString dataUsingEncoding:NSUTF8StringEncoding]
[request setHTTPBody:jsonData];

}

}
else
{
NSLog(@"This Data can't be serialized");

}
//NSLog(@"URL Request %@",[request allHTTPHeaderFields]);
NSLog(@"jsonDATA %@",jsonData);

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (connectionError) {
//NSLog(@"Error %@",connectionError.description);
}else
{
NSLog(@"%@",response);
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"data str %@",str);

}
}];

JSONstring 的内容是==

{
"ScreenID" : "screenID1",
"DeviceID" : "E7EF8DCE-CE8A-4F0C-BBC5-F080C29FEF29",
"SessionStartTime" : "2014-03-27T06:50:15",
"SessionEndTime" : "2014-03-27T06:50:15"
}

jsonDATA 的内容是==

<7b0a2020 22536372 65656e49 4422203a 20224c61 6e64696e 67506167 65564322 2c0a2020 22446576 69636549 4422203a 20224537 45463844 43452d43 4538412d 34463043 2d424243 352d4630 38304332 39464546 3239222c 0a202022 53657373 696f6e53 74617274 54696d65 22203a20 22323031 342d3033 2d323754 30373a31 343a3336 222c0a20 20225365 7373696f 6e456e64 54696d65 22203a20 22323031 342d3033 2d323754 30373a31 343a3336 220a7d>

我的问题:-

由于我的webservice中HTTPBody的格式不支持生成的格式

[request setHTTPBody:jsonData];

不过如果我能用就好了

[request setHTTPBody:JSONstring];

但是

NSString 参数不能与 setHTTPBody 方法一起使用我应该怎么办 ?是否有替代解决方案?

最佳答案

将 JSON 字符串编码为数据以设置为正文数据是正确的做法。它不会更改格式或任何字符串内容(您的数据日志在此表单中并不真正意味着任何内容)。

当数据到达服务器时,它将被用作一个字符串,这是一个带有一组键/值对的 JSON 格式的字符串。这是预期的行为。

如果您的服务器没有正确处理 JSON,那么您可能会遇到请求中设置的 header 或 JSON 包含的键/值的问题。

关于ios - 如何使用以 NSString 作为参数的 setHTTPBody 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com