我在设备中连接了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]]);
执行代码时会在终端中产生以下输出。
检测到不正确的 NSString 0x0000编码值。假设 NSStringEncodingASCII。将在不久的将来停止此兼容性映射行为。
控制台中打印的帖子长度 =>
0 帖子长度
最后还有一个字符串出现,即超时消息,
请求失败: 请求因响应数据而超时
100% 确定服务器处于活动状态,并立即响应从模拟器执行的应用程序。
如何让程序在模拟器中正常运行,但不在设备中运行?
不正确的 NSString编码值 检测到0x0000。若 NSStringEncodingASCII.将阻止这种情况 兼容性映射行为在 近期。
表示您有一个没有NSStringEncoding
值的NSString
正在启动,请检查您的NSString
调用。
ASIHTTPRequest 中的 POST 中的空体
尝试:
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]]);
}
问题出在服务器端。ASIHTTP lib 工作正常,当 ASI 尝试将带有帖子正文的请求传输到服务器时,apache 没有正确响应,因为可能缺少其中一个服务器配置。专有网络库所有者稍后修复了它,问题解决了。
它在模拟器中工作,但在设备中不起作用,为什么?
它在模拟器中工作,因为数据是通过以太网而不是无线传输的,因此传输速率相对较高。
Web 服务开发人员必须确保数据被接收到,甚至 如果它来自低速网络
**
ASI 库返回 ASCII 编码错误,为什么?
**
一旦请求超时,ASI 会立即返回此错误。这是原因,但必须找出ASI针对此错误的真正内部问题。
非常有趣的结果在一天结束时得到了。