我正在使用ASIHTTPRequest将数据发送到iPhone 4.2.1上的远程服务器。当我向服务器发出以下发布请求时,我得到400响应(我删除了IP地址):
NSString dataString = @"data1=00&data2=00&data3=00";
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:<ipremoved>]]];
[request appendPostData:[dataString dataUsingEncoding:NSUTF8StringEncoding]];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"User-Agent" value:@"iphone app"];
[request addRequestHeader:@"Content-Type" value:@"application/octet-stream"];
request.delegate = self;
[request startAsynchronous];
当我使用curl发送相同的数据时,我收到200响应:
curl -H "User-Agent: iphone app" -H "Accept:" -H "Content-Type:application/octet-stream" --data-ascii "data1=00&data2=00&data3=00" --location <ipremoved> -v
我的同事说,在失败的情况下,ASIHTTPRequest需要两个套接字读取:一个用于标头,一个用于数据。显然服务器目前没有正确解析这个,所以我试图解决它。
如果我在iPhone和我的Mac之间设置代理并运行Paros(查看数据包),问题就会消失。 Paros将头部和数据组合在一起,以便服务器在单个套接字读取中获取它。
我在其他帖子中尝试了一些建议,包括禁用持久连接,但我没有运气。我也尝试过做ASIHTTPFormRequest,但服务器不喜欢生成的数据格式。
任何建议都将不胜感激。
感谢。
答案 0 :(得分:0)
“我的同事说,在 失败案例,ASIHTTPRequest 需要两个套接字读取:一个用于 标题和一个数据。 显然服务器目前不是 有能力解析这个,所以我 我正试图解决它。“
你知道这个事实,还是猜测?这样的HTTP服务器会非常破碎,并会导致各种随机问题。
您是否看过Paros正在接收的内容以及发送的内容?它可能会在请求中偶然修复错误,如果是,您可以以相同的方式修复请求。