java.net.ProtocolException:意外的状态行:<!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 4.01 // EN”
问题描述:
我想使用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;
}
答
您正在检索一个通常的HTML页面作为响应,它不是JSON就绪。找到此网站的API以检索JSON内容类型。
,我想你应该添加format=json
到您的网址:
new URL("http://o-two-sport.com/api/posts/?format=json&sport_type="+sport_type);
HTTP响应不是JSON海峡,它由HTML返回错误信息。您需要确认当您请求的HTTP响应无效时,哪种类型的内容。 – neuo