而不是使用HttpURLConnection为什么不使用HttpClient类与HttpPost类。 这样就可以避免URL编码的紧张。 以下是如何实现的示例:
String result = "";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(YOUR URL);
try {
ArrayList nameValuePairs = new ArrayList();
nameValuePairs.add(new BasicNameValuePair(PARAMETER1, VALUE1));
nameValuePairs.add(new BasicNameValuePair(PARAMETER2, VALUE2));
...
nameValuePairs.add(new BasicNameValuePair(PARAMETERn, VALUEn));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
result = EntityUtils.toString(response.getEntity());
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
编辑:
String result = "";
URL url = new URL(YOUR URL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
List nameValuePairs = new ArrayList();
nameValuePairs.add(new BasicNameValuePair(PARAMETER1, VALUE1));
nameValuePairs.add(new BasicNameValuePair(PARAMETER2, VALUE2));
...
nameValuePairs.add(new BasicNameValuePair(PARAMETERn, VALUEn));
//Send request
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getUrlParameters(params));
writer.flush();
writer.close();
os.close();
//Get Response
InputStream is = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
while((line = br.readLine()) != null) {
response.append(line);
response.append('\r');
}
r.close();
result = response.toString();
conn.disconnect();
getUrlParameters()方法的代码:
private String getUrlParameters(List params) throws UnsupportedEncodingException{
StringBuilder parameter = new StringBuilder();
boolean first = true;
for (NameValuePair pair : params)
{
parameter.append(URLEncoder.encode(pair.getName(), "UTF-8"));
parameter.append("=");
parameter.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
parameter.append("&");
}
return parameter.toString().substring(0, parameter.length()-2);
}
但我最初的方法很容易实现,并且从来没有让我失望过。 至于您希望完全使用哪种方法,请使用HttpURLConnection(Android推荐方法)或另一种方法。