小编tom*_*tom的帖子

使用NSURLConnection从iPhone进行HTTPS POST会挂起某些文件大小范围

我正在使用NSURLConnection对我们的web服务进行异步HTTPS POST以上传jpg.它大部分时间都可以正常工作.

但是当帖子正文在196609和196868字节(包括)之间时,连接在文件上传100%后挂起(didSendBodyData告诉我它是100%发送的).然后在5分钟后,连接超时,并显示消息"网络连接已丢失".更大和更小的文件大小工作.我通过限制我添加到帖子正文的文件的文件大小来测试这个.

内容长度设置正确.请参阅下面的代码.

当我通过HTTP上传到netcat时,上传看起来很好.消息的整个部分都可以通过.但我怀疑因为SSL加密而出现了问题,就像它正在缓冲SSL加密的块帧一样.

iPhone的SSL代码中是否存在一个错误,即使它报告的是其他内容,它也不会上传整个帖子正文?

这是我设置内容长度的部分,并将文件附加到多部分POST主体.您可以看到我手动限制文件大小以进行测试.

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:nsurl];
[request setHTTPMethod:@"POST"];
[request setTimeoutInterval:1];
[request addValue:@"close" forHTTPHeaderField: @"Connection"];

// Add headers and POST information
NSLog( @"Posting file." );
NSString *stringBoundary = [NSString stringWithString:@"0xKhTmLbOuNdArY"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",stringBoundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *postBody = [NSMutableData data];
Run Code Online (Sandbox Code Playgroud)

...

[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n",stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"uploadFile\"; filename=\"upload.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Type: image/jpg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
NSLog( @"file size...%d", [uploadFile length] );
//[postBody appendData:uploadFile];
[postBody appendData:[NSData dataWithBytes: [uploadFile bytes] …
Run Code Online (Sandbox Code Playgroud)

iphone ssl post nsurlconnection nsurlrequest

5
推荐指数
1
解决办法
6828
查看次数

标签 统计

iphone ×1

nsurlconnection ×1

nsurlrequest ×1

post ×1

ssl ×1