【发布时间】:2017-04-18 10:24:44
【问题描述】:
HttpUrlConnection POST 请求不起作用。告诉我是否有任何其他方式可以在 android 中发出 POST 请求。告诉我是否有任何其他方式可以在 android 中发出 POST 请求。告诉我是否有任何其他方式可以在 android 中发出 POST 请求。
public final String apiCall(String pUrl) {
if( ! isInternetAvailable() )
return "NO_INTERNET";
try {
URL lUrl = new URL(pUrl.replace(" ", "%20"));
Log.i("url", String.valueOf(lUrl));
String url = pUrl;
Log.i("dom", url.substring(0, (url.indexOf('?') - 1)));
Log.i("para", url.substring((url.indexOf('?') + 1), url.length()) );
URL obj = new URL(url.substring(0,(url.indexOf('?')-1)));
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "GYUserAgentAndroid");
con.setRequestProperty("Content-Type", "application/json");
String urlParameters = url.substring((url.indexOf('?')+1), url.length());
Log.i("urlParameters", urlParameters.toString());
// Send post request
con.setDoInput(true); // true if we want to read server's response
con.setDoOutput(true); // false indicates this is a GET request
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
Log.i("res",response.toString());
return response.toString();
}catch (Exception e) {
Log.i("secondEx",e.toString());
return "ERROR";
}
}
【问题讨论】:
-
我建议您使用 Retrofit - 它是适用于 Android 和 Java 的类型安全 HTTP 客户端。在这里你可以研究这个square.github.io/retrofit
标签: android