为啥我的 JSON 发布请求以十六进制值结束?

Posted

技术标签:

【中文标题】为啥我的 JSON 发布请求以十六进制值结束?【英文标题】:Why does my JSON post request end up as a hex value?为什么我的 JSON 发布请求以十六进制值结束? 【发布时间】:2015-02-24 11:57:55 【问题描述】:

我正在尝试通过我的 ios 应用发布帖子。我尝试传递的 JSON 称为 finalConvertedJson,当我将其打印在日志上时,它看起来像是一个不错的 JSON 对象。

但是当我使用下面的代码发布它时,Web 服务将代码作为十六进制值接收,并且不知道如何处理它。当我在 Postman 中尝试相同的 JSON 对象和 URL 时,它可以完美运行。

self.finalStringJson = [[NSString alloc] initWithData:self.finalConvertedJson encoding:NSUTF8StringEncoding];
NSLog(@"this this: %@", self.finalStringJson);

    NSData* responseData = nil;
    NSString *urlString = @"http://10.2.176.100:9000/TestIOS?mobileData";
    NSURL *url=[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    responseData = [NSMutableData data] ;
    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
    NSString *bodydata=[NSString stringWithFormat:@"%@",self.finalConvertedJson];

    [request setHTTPMethod:@"POST"];
    NSData *req=[NSData dataWithBytes:[bodydata UTF8String] length:[bodydata length]];
    [request setHTTPBody:req];
    NSURLResponse* response;
    NSError* error = nil;
    responseData = [NSURLConnection sendSynchronousRequest:request     returningResponse:&response error:&error];
    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

    NSLog(@"the final output is:%@",responseString);

我猜这是我的 iOS 代码中的某种编码问题。

我是 iOS 新手,所以我可能在这里遗漏了一些简单的东西。

【问题讨论】:

你能显示一些日志吗? @mistyhua 篇幅较长,贴在这里:tny.cz/416bde8d 【参考方案1】:

我认为问题出在这条线上……

NSString *bodydata = [NSString stringWithFormat:@"%@",self.finalConvertedJson];

您正在使用self.finalConvertedJson,但我认为您打算使用self.finalStringJson。如果是这样,你可以这样做......

NSString *bodydata = self.finalStringJson;

【讨论】:

感谢您的回答,但不是那一行。我通过使用不同的邮政编码解决了这个问题。

以上是关于为啥我的 JSON 发布请求以十六进制值结束?的主要内容,如果未能解决你的问题,请参考以下文章

为啥十六进制颜色值中有前导“#FF”?

为啥 chr() 返回一个十六进制值,我怎样才能让它只返回字符 [重复]

使用 Newtonsoft JSON 反序列化十六进制值

为啥十六进制数字以#而不是0x为前缀?

名称不能以 '<' 字符十六进制值 0x3c 开头

为啥使用十六进制常量?