2017-04-12 2 views
1

Je souhaite obtenir des données à l'aide de la méthode HTTP GET. Mais la réponse est faussejava.net.ProtocolException: ligne d'état inattendue: <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 // FR"

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

Comment réparer?

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

la réponse HTTP n'est pas JSON str, il renvoie les informations d'erreur en html. vous devez confirmer quel type de contenu la réponse HTTP est lorsque votre demande est invalide. – neuo

Répondre

0

Vous récupérez une page HTML habituelle en réponse, qui n'est pas compatible avec JSON. Trouvez une API de ce site pour récupérer le type de contenu JSON.

Je suppose que vous devez ajouter à votre format=json URL:

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