2011-07-08 7 views
1

デバイスにWi-Fiが接続されています。これは除外されています。ASIFormDataRequestはデバイスから.zipファイルをアップロードすることはできませんが、シミュレータで行います

iOS 4.3.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

strURLは完全に問題ありません。デリゲートは応答があるときに完全に実行しています。 – Futur

+0

送信しているファイルのサイズはどれくらいですか? –

+0

30kb圧縮されパスワードで保護されたzipファイル。 – Futur

答えて

1

問題は、サーバー側とありました。 ASIHTTP libは正常に動作します.ASIがサーバーへのPOST要求を送信しようとすると、おそらくサーバー構成の1つが欠落していたため、Apacheは正しく応答しませんでした。プロプライエタリなWebライブラリの所有者が後で問題を解決し、問題は解決しました。

これはシミュレータでは動作しましたが、デバイスでは動作しませんでした。なぜですか?

データはワイヤレスではなくイーサネットを介して送信されるため、伝送速度は比較的速いです。

Webサービス開発者は、それが低速ネットワーク

から来る場合plzのデータも を受けていることを確認する必要があり**

ASIのLIBSは、ASCIIエンコードのエラーを返しました、 なぜ?

**

要求が時間行くと、このエラーはすぐにASIによって返される - アウト。これが原因ですが、このエラーに対するASIの実際の内部問題を突き止めなければなりません。

非常に興味深い結果が1日の終わりに取り出されました。

2

不正なNSStringEncoding値 0x0000が検出されました。 NSStringEncodingASCIIと仮定すると、 です。近いうちに の互換性マッピング動作を停止させます。

はあなたNSString通話をチェックし、NSStringEncoding値なしinitalizedされている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]]); 
} 
+0

@ "file"はそのような文字列で置き換えることができます。実際のパスはNSString変数です。しかし、同時に私はあなたが提案したように変更しました:) ..まだdidntの仕事.. – Futur

+0

@Futur私はより多くの提案と私の投稿を編集しました –

+0

こんにちはショーン、返信のおかげで感謝..偉大な努力。あなたが言ったように、コンテンツの長さは適切に印刷されています。私はまだホストにファイルをアップロードすることができません。他に何か信じがあります。私にとってここで最大の問題は、同じプログラムがシミュレータでうまく実行されますが、デバイスでは実行されないということです。plz help me out – Futur

関連する問題