我在设备中连接了wifi - 所以这被排除了。
我执行相同的以下代码的应用程序能够将文件上传到iOS 4.3模拟器中的java服务器,但无法在iOS 4.3.3设备中上传。这有点奇怪。
ASIFormDataRequest *request_zip = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:strURL]];
[request_zip setAllowCompressedResponse:YES];
[request_zip setPostValue:@"device" forKey:@"value1"]; //pass device ID here...
//[request_zip addRequestHeader:@"Content-Type" value:@"multipart/form-data"];
[request_zip setTimeOutSeconds:20];
[request_zip setDelegate:self];
[request_zip setDidFailSelector:@selector(uploadFailed:)];
[request_zip setDidFinishSelector:@selector(uploadFinished:)];
[request_zip setFile:path forKey:path];
[request_zip startAsynchronous];
NSLog(@"%@ post length",[NSString stringWithFormat:@"%llu",[request_zip postLength]]);
执行时的代码会在终端中产生以下输出。
检测到不正确的NSStringEncoding值0x0000。假设NSStringEncodingASCII。将在不久的将来停止这种兼容性映射行为。
控制台中打印的帖子长度=>
0帖子长度
最后还会出现另一个字符串,即超时消息,
请求失败: 请求超时,响应数据
100%确定服务器处于活动状态,并立即响应从模拟器执行的应用程序。
如何让程序在模拟器中正常运行但不在设备中运行?
答案 0 :(得分:2)
NSStringEncoding值不正确 检测到0x0000。假设 NSStringEncodingASCII。会阻止这个 兼容性映射行为 不久的将来。
表示您的NSString
已被初始化而没有NSStringEncoding
值,请检查您的NSString
来电。
Empty body in POST in ASIHTTPRequest
尝试:
NSURL *requestURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@", strURL]];
ASIFormDataRequest *request_zip = [ASIFormDataRequest requestWithURL:requestURL];
NSLog
会在[request_zip startAsynchronous];
之后立即启动,当时可能只是初始化,您需要将日志请求移动到委托方法,将其更改为[request_zip startSynchronous];
并将其更改为 - (void)requestStarted:(ASIHTTPRequest *)request {
NSLog(@"%@ post length",[NSString stringWithFormat:@"%llu",[request postLength]]);
}
会马上开火,。
然后您的委托方法将如下所示:
{{1}}
答案 1 :(得分:1)
问题在于服务器端。 ASIHTTP lib正常工作,当ASI尝试将邮件正文传输到服务器时,apache没有正确响应,因为可能缺少其中一个服务器配置。专有Web库所有者稍后修复它,问题得到解决。
它在模拟器中工作但在设备中没有,为什么?
它在模拟器中工作,数据通过以太网而不是无线传输,因此传输速率相对较大。
Web服务开发人员必须确保即使收到数据也是如此 如果它来自低速网络
**
ASI libs返回ASCII编码错误,为什么?
**
请求超时后,ASI会立即返回此错误。这是原因,但必须找到ASI对此错误的真正内部问题。
结束了非常有趣的结果。