2011-11-14 10 views
1

私はHttpsURLConnectionが2.3より前のバグだと読んでいて、それがバグであるという直接の経験があります。Android HttpsURLConnectionとHttpClientはどちらも問題あり

私が試した代替は、しかし、それはそれは私にこれを返すという意味で、私に問題を与え、HttpClientを次のとおりです。

私ははっきりとJSONを取り戻すになってる
<?xml version="1.0" encoding="iso-8859-1"?> 

HttpsURLConnectionはJSONをうまく返しますが、多くのリクエストを処理するときには一貫性のない結果が表示されます。 (リターンJSONでは、レスポンスにJSONが含まれているはずです)

HttpClientがJSONの代わりにxmlタグを返す理由は何ですか?

EDIT - CODE

HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost(url); 

    List<NameValuePair> urlParams = new ArrayList<NameValuePair>(); 
     urlParams.add(new BasicNameValuePair("&platform=","Android")); 
     urlParams.add(new BasicNameValuePair("&action=","signin")); 
     urlParams.add(new BasicNameValuePair("&user",username)); 
     urlParams.add(new BasicNameValuePair("&pass",password)); 



    try { 

     post.setEntity(new UrlEncodedFormEntity(urlParams, HTTP.UTF_8)); 
     HttpResponse resp = client.execute(post); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(
       resp.getEntity().getContent())); 

     String line = ""; 
     JSONArray ja = new JSONArray(); 
     while ((line = rd.readLine()) != null) { 
      Log.i("------>", line); 
      ja = new JSONArray(line); //breaks here because it returns xml instead of JSON 

     } 
     rd.close(); 
     return ja; 

    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 

は、これら2つの任意のより良い交互ありますか?

+1

以下のように記述する必要が"&"文字

を追加する必要が"&"を追加しません。 –

+0

私はそれが問題であるかどうかわからないが、サイトはhttpsではなく、http – volk

+0

である。まずは.netサービスかPHPか? –

答えて

1

これは、エラーページのサーバーからの応答のようです。 404エラーや他の多くのHTTPエラーが発生している可能性があります。これは、サーバーから戻ってくるhtmlファイルの始まりに過ぎません。 URLが有効なURLであることを確認して、リダイレクトせずにモバイルからの接続を受け入れますか?

+0

問題は、HttpsURLConnectionで完全に正常に動作し、それが返す1行だけです。ちょうどそのXMLビット。 – volk

+0

通話のコードを投稿できますか? – Bobbake4

+0

コード – volk

0

の代わりに:

List<NameValuePair> urlParams = new ArrayList<NameValuePair>(); 
     urlParams.add(new BasicNameValuePair("&platform=","Android")); 
     urlParams.add(new BasicNameValuePair("&action=","signin")); 
     urlParams.add(new BasicNameValuePair("&user",username)); 
     urlParams.add(new BasicNameValuePair("&pass",password)); 

これを試してみてください:

List<NameValuePair> urlParams = new ArrayList<NameValuePair>(); 
     urlParams.add(new BasicNameValuePair("platform","Android")); 
     urlParams.add(new BasicNameValuePair("action","signin")); 
     urlParams.add(new BasicNameValuePair("user",username)); 
     urlParams.add(new BasicNameValuePair("pass",password)); 

アップデート1:

あなたはここに実装するため、正確に何をしようとしている。

String line = ""; 
     JSONArray ja = new JSONArray(); 
     while ((line = rd.readLine()) != null) { 
      Log.i("------>", line); 
      ja = new JSONArray(line); //breaks here because it returns xml instead of JSON 

     } 

それは明らかになりますエラーが発生したためXMLレスポンス文字列からJSONArrayを作成しようとしていますが、このpublic JSONArray (String json)関数をintseadにチェックして実装してください。

+0

で更新されましたが、残念ながらそれは動作しませんでした:( – volk

+0

@lazeR any response?logcatの出力または応答を表示するには、正確に取得する方がよいでしょう。 –

+0

XMLはJSON形式ではないため、JSON配列が作成されていないため、レスポンスは<?xml version = "1.0" encoding = "iso-8859-1"?>であり、エラーはnullpointerexceptionsです。 – volk

1

"&"文字をBasicNameValuePair keyから削除する必要があります。

BasicNameValuePairはautometicallyので、各パラメータにあなたは私たちはいくつかのコードを必要とする

urlParams.add(new BasicNameValuePair("platform","Android")); 
関連する問題