Android HttpUrlConnection返回500
我试图使用android访问打开的天气api。我使用了两种方法,一种用于创建url,另一种用于获取http响应。Android HttpUrlConnection返回500
创建网址
public static String API_LINK="http://samples.openweathermap.org/data/2.5/weather";
public static String apiRequest(String lat, String lng){
StringBuilder sb=new StringBuilder();
Uri builtUri = Uri.parse(API_LINK)
.buildUpon()
.appendQueryParameter("lat", lat)
.appendQueryParameter("lon", lng)
.appendQueryParameter("appid", API_KEY)
.build();
sb.append(builtUri.toString());
return sb.toString();
}
Http请求
public String getHTTPData(String urlString){
try {
URL url=new URL(urlString);
HttpURLConnection httpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
Log.d("Helper", httpURLConnection.getResponseCode()+"");
if(httpURLConnection.getResponseCode()==200){//ok=200
BufferedReader r=new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "UTF-8"));
StringBuilder sb=new StringBuilder();
String line;
while ((line=r.readLine())!=null){
sb.append(line);
stream=sb.toString();
httpURLConnection.disconnect();
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return stream;
}
,我用一个的AsyncTask调用此方法在MainActivity
new GetWeather().execute(apiRequest("65.9667","-18.5333"));
但每次我ま时间请求我获得500个http响应代码。我试图浏览器创建的网址,它的工作。它在我的模拟器中不起作用。
我该如何解决这个问题。谢谢
感谢您的回复。但我可以使用浏览器访问相同的网址 –
如果您可以使用浏览器访问相同的网址,请确保将正确的参数和标题添加到您的请求中。这是自服务器端错误以来所能做的。 –
@MudithaHasanka面临问题了吗? –
这是一个内部服务器错误,它可能是服务器的错误。 –
但我可以使用浏览器访问相同的网址 –
你有没有使用过OpenWeatherMap API密钥? –