0

iOS アプリケーションを使用していますが、サーバーに到達したときに一部のコンテンツが切り捨てられているため、エンコードの問題に関連していると思われるエラーが発生しています。これは、投稿されたコンテンツのハッシュを作成することを含む認証メカニズムをいじっているため、問題があります (他のものと一緒ですが、それが基本です)。

これまでのところ、問題をローカルで再現することはできませんでした。絵文字キーボードのようなものに関連しているという理論があります。でも、絵文字、国際的な文字、考えられるすべてのものを投稿してみました。試してみると、すべてが正しく投稿されます。iOS 4 と 5 の間で、iOS が絵文字をエンコードする方法に違いがあったことは知っています。何人かのお客様と話をして、彼らが何を使用しているかを把握することができました。通常は iOS 6 で、iPhone 4s または 5 のいずれかです (テスト デバイスと同様に、私がテストしました)。 ios 5 および 6) ... OS には関係ないようです。

これが、投稿のリクエストの本文を設定する方法です。

[req setHTTPBody:[paramString dataUsingEncoding:NSUTF8StringEncoding]];

以前は、コンテンツ タイプを次のように設定していました。

[req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 

そして、私の理論では、コンテンツ タイプの文字セットを明示することで修正できる可能性があります。

[req setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; 

だからあなたへの私の質問は、これはクレイジーですか?文字セットを UTF-8 に設定する際に明示的にすると問題が解決すると思いますか? 問題が発生している場所を特定するために推奨できるその他のトラブルシューティング手法はありますか?

4

1 に答える 1

0

失敗した要求の Wireshark または Fiddler トレースがありますか? クライアントが実際に切り捨てられたデータを送信していることを確認するためにそこから始めます。これはサーバー側の問題ではありません。

Content-Length送信されたデータに関係なく、ヘッダーが正しいことを確認してください。この問題は簡単には再現できないため、おそらく問題を見たユーザーからより具体的なデータを収集して、問題のある入力を特定し、壊れたリクエストを繰り返し再現できるようにします。

UITextField から直接文字列を取得している場合、エンコーディングの問題ではないかと思います。エンコーディングの問題は発生しないはずです。CStrings または NSData に出入りする場合は、最初に確認する場所になります。

決して決定的な答えではありませんが、それが私が始めるところです。

于 2013-02-09T00:20:39.147 に答える