gpt4 book ai didi

iphone - NSMutableURLRequest 发送部分帖子正文

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:17 26 4
gpt4 key购买 nike

我正在使用 NSMutableURLRequest 将 base64 编码的图像作为发布请求的一部分发送到服务器。我作为帖子正文记录的内容和服务器收到的内容不是一回事。服务器似乎得到了一个截断的版本,就好像连接中途中止了一样。请看下面的代码:

NSString *dataStr = [NSString stringWithFormat:@"request_data=%@",reqStr];
NSLog(@"datastr is %@",dataStr);
NSData *dataForUrl = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"nsdata length is: %i",[dataForUrl length]);
[urlRequest setHTTPBody:dataForUrl];
[urlRequest setValue:[NSString stringWithFormat:@"%d", [dataForUrl length]] forHTTPHeaderField:@"Content-Length"];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *res, NSData *data, NSError *err) {
// ...
}

第一条日志语句显示了正确的数据。我什至将字符串的 base64 部分带到了 http://www.motobit.com/util/base64-decoder-encoder.asp , 将其解码为 jpg,这是正确的图像。第二条日志语句显示长度大小正确(例如,当图片为 422480 时为 422624)。

我找不到连接详细信息或数据有任何问题。电话建立连接,发送一些数据,然后电话停止发送或服务器停止接收。是什么原因导致的?

编辑:示例数据链接 http://pastebin.com/BS9HjKhg

Edit2:服务器或 iOS 正在将 + 从图像转换为空格。当我找到正确的发送方式时,我会发布答案。

最佳答案

我能够将来自服务器的完整示例与 xcode 记录的内容进行比较,并发现 + 已转换为 [space]。因为那是唯一有问题的字符,而且 url 编码在 iOS 中有问题,所以我就做了

NSString *dataStr = [NSString stringWithFormat:@"request_data=%@",[reqStr stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"]];

服务器再次接受它们。我仍然不确定服务器是问题还是 iOS。连接的其他操作系统使用相同的 application/x-www-form-urlencoded 作为其内容类型,没有问题。

关于iphone - NSMutableURLRequest 发送部分帖子正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323667/

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