HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在Objective-C中发送分块的HTTP 1.1请求大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下问题:我正在创建一个非常大的SOAP请求(数据是一个编码为Base64字符串的视频),因此我不能将其作为原始SOAP请求发送,而是需要在http 1.1块中发送它.我似乎无法弄明白该怎么做.我在这里使用了代码
What are alternatives to NSURLConnection for chunked transfer encoding
但它似乎没有做我认为应该做的事情 – 我可以看到请求作为单个请求到达服务器而不是很多块(我在服务器上使用WireShark来查看传入的流量.)

我知道Android上的类似功能使用Apache Foundations http库进行Java工作 – 有了这些,任何预先未指定长度的http请求都会作为http 1.1 Chunked request传输 – 我可以看到这些请求到达了服务器作为单独的块…我想模仿它.

(更新:似乎我AFNetworking可能有功能,但我没有找到任何关于如何使用它的例子.)

这是我的代码,或多或少:

NSString *soapBody = ....; //some correctly formed SOAP request XML here 


NSURL *url = [NSURL URLWithString:...];
NSMutableURLrequest* request = [NSMutableURLrequest requestWithURL:url];
[request addValue: ... forhttpHeaderField:@"SOAPAction"];
[request sethttpR_214_11845@ethod:@"POST"];
[request addValue:@"text/xml" forhttpHeaderField:@"Content-Type"];
[request sethttpBody:[soapBody dataUsingEncoding:NSUTF8StringEncoding]];
ChunkedTransferConnection* connection = [ChunkedTransferConnection alloc];
[connection establishConnectionWithrequest:request];

ChunkedTransferConnection的实现如下

@implementation ChunkedTransferConnection

    @synthesize p_connection;
    @synthesize p_responseData;

    - (void)establishConnectionWithrequest:(NSMutableURLrequest *)request
    {
        self.p_responseData = [[NSMutableData alloc] initWithLength:0] ;
        self.p_connection = [[NSURLConnection alloc] initWithrequest:request delegate:self startImmediately:YES];
    }
...
@end

解决方法

弄清楚了:
NSInputStream *dataStream = [NSInputStream inputStreamWithData:[soapBody dataUsingEncoding:NSUTF8StringEncoding]];
[request sethttpBodyStream:dataStream];

这会导致请求自动处于HTP 1.1块中!

大佬总结

以上是大佬教程为你收集整理的ios – 在Objective-C中发送分块的HTTP 1.1请求全部内容,希望文章能够帮你解决ios – 在Objective-C中发送分块的HTTP 1.1请求所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。