2017-04-12 3 views
1

HTTP GETメソッドを使用してデータを取得したい。 回答が間違っていますjava.net.ProtocolException:予期しないステータス行:<!DOCTYPE HTML PUBLIC " - // W3C // DTD HTML 4.01 // EN"

java.net.ProtocolException: Unexpected status line: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 

どのように修正するのですか?

public JSONArray GetPost_sport(String token, String sport_type){ 

    JSONArray jsonArray = null; 

    try { 
     URL url = new URL("http://o-two-sport.com/api/posts/?sport_type="+sport_type); 

     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestProperty("Authorization","Token " +token); 
     conn.setRequestProperty("Content-Type", "application/json"); 
     conn.setRequestProperty("Connection", "close"); 
     conn.connect(); 

     InputStream is = conn.getInputStream(); 
     BufferedReader streamReader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
     StringBuilder responseStrBuilder = new StringBuilder(); 

     String inputStr; 
     while ((inputStr = streamReader.readLine()) != null) 
      responseStrBuilder.append(inputStr); 

     jsonArray = new JSONArray(responseStrBuilder.toString()); 

    } catch (IOException | JSONException e) { 
     e.printStackTrace(); 
    } 

    return jsonArray; 
} 
+0

HTTPレスポンスはJSON STRではない、それはHTMLでエラー情報を返します。要求時にHTTP応答がどのタイプのコンテンツであるかを確認する必要があります。 – neuo

答えて

0

通常のHTMLページをレスポンスとして取得していますが、これはJSON対応ではありません。このサイトのAPIを検索してJSONコンテンツタイプを取得します。

私はあなたのURLにformat=jsonを追加する必要がありますと仮定します

new URL("http://o-two-sport.com/api/posts/?format=json&sport_type="+sport_type); 
関連する問題