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";
}
}
答案 0 :(得分:0)
试试这个
InputStream inputStream;
HttpURLConnection urlConnection;
byte[] outputBytes;
public class WebServiceAsyncTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
try {
URL url = new URL(Url);
urlConnection = (HttpURLConnection) url.openConnection();
outputBytes = query.getBytes("UTF-8");
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setConnectTimeout(15000);
urlConnection.connect();
OutputStream os = urlConnection.getOutputStream();
os.write(outputBytes);
os.flush();
os.close();
inputStream = new BufferedInputStream(urlConnection.getInputStream());
ResponseData = convertStreamToString(inputStream);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ResponseData;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
public String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append((line + "\n"));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
以json字符串格式传递参数
JSONObject() params = new JSONObject();
params.put("key","your parameter");
params.put("key","your parameter");
query=params.toString();
查看this链接以供参考
答案 1 :(得分:0)