在ASIHTTPRequest中POST中的空体

Fra*_*ank 6 iphone objective-c asihttprequest

基本上,我发送一个带有空数据体的POST请求:

  ASIHTTPRequest *request [ASIHTTPRequest alloc] init];
  [request setURL:[NSURL URLWithString:escapedUrlString]];
  [request setRequestMethod:@"POST"];
  [request addRequestHeader:@"Content-Type" value:@"application/xml"];
  [request startSynchronous];
Run Code Online (Sandbox Code Playgroud)

但我每次都得到这样的回应:

检测到不正确的NSStringEncoding值0x0000.假设NSStringEncodingASCII.将在不久的将来停止这种兼容性映射行为.

我想知道是否必须设置发布值.

Rog*_*Rog 9

我对ASIHTTPRequest包装器没有多少经验,但我可以看到你正在初始化它,alloc:init而我见过的大多数例子都有一个方便的初始化程序,requestWithURL:(NSURL*)url

ASIHTTPRequest *request = [AIHTTPRequest requestWithURL:escapedUrlString];
Run Code Online (Sandbox Code Playgroud)

我猜这个便利的initaliser也会为你的帖子请求设置一些必要的变量,包括NSStringEnconding.

来自http://allseeing-i.com/ASIHTTPRequest/How-to-use#handling_text_encodings的ASIHTTPRequest文档

处理文本编码

ASIHTTPRequest将尝试从Content-Type标头读取接收数据的文本编码.如果找到文本编码,则会将responseEncoding设置为适当的NSStringEncoding.如果它在标头中找不到文本编码,它将使用defaultResponseEncoding的值(默认为NSISOLatin1StringEncoding).

当您调用[request responseString]时,ASIHTTPRequest将尝试使用responseEncoding作为源编码从其收到的数据创建字符串.