2011-10-26 17 views
3

http POSTのいくつかの変数に基づいて、Webサーバーからいくつかのhtmlを取得する小さなアプリケーションを作成しています。返されるHTMLデータには、改行文字とタブ文字を使用してうまく配置されている単語が含まれていますが、私のアプリケーションはそれを受け取らないため、その部分に<pre>セクションがあります。私はそれが私がでラインで読んでいたので、それがかもしれないと思った私はそうApache HTTPClientが改行文字を処理しない

private StringBuilder inputStreamToString(InputStream is) throws IOException { 
    int c; 
    StringBuilder total = new StringBuilder(); 

    // Wrap a BufferedReader around the InputStream 
    BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 

    // Read response until the endIndex 
    while ((c = rd.read()) != -1) { 
     total.append((char)c); 
    } 

    // Return full string 
    return total; 
} 

ようにBufferedReaderのを通してそれを置くことによって、応答を読んでいますかかもしれないと思う

HttpPost post = new HttpPost("REMOVED FOR PRIVACY"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
      //REMOVED FOR PRIVACY 

     post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpClient.execute(post, httpContext); 
     String htmlBrief = inputStreamToString(response.getEntity().getContent()).toString(); 
     return htmlBrief; 
     } 

を次のようにコードがあります私は一度に1文字に切り替えましたが、それは問題を助けませんでした。

ご協力いただければ幸いです。実際にHTTP要求本体に送られるものを検査する

おかげで、ベン

+0

rd.readLine()を試しましたか?なぜBufferedReaderを使用してバッファリングを利用しないのですか? – pawelzieba

+0

はい、私は行を読んでみました。私はreadlineが私の新しい行の文字を失っていた理由だと思ったので、ちょうど読むように切り替えました。 –

+0

入力ストリームをラップして、ストリーム内に正確に何が入っているかを調べます。 – pawelzieba

答えて

0

使用CharlesまたはFiddler

ほとんどの問題:

  • クライアント&サーバーの不整合の文字セット。
  • URLエンコードされたボディのデコードに失敗しました。
関連する問題