Android 5.1中已弃用org.apache.http
类和AndroidHttpClient类。这些类不再被维护,您应该尽快使用这些API将任何应用程序代码迁移到URLConnection类。
https://developer.android.com/about/versions/android-5.1.html#http
建议切换到URLConnection类。没有足够的文件记录如何从应用程序进行帖子调用。
目前我正在使用此
public void postData()
{
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");
try
{
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
}
catch (ClientProtocolException e)
{
// TODO Auto-generated catch block
}
catch (IOException e)
{
// TODO Auto-generated catch block
}
}
如何使用UrlConnections进行操作?
答案 0 :(得分:31)
使用HttpUrlConnection分享我的代码的想法
public String performPostCall(String requestURL,
HashMap<String, String> postDataParams) {
URL url;
String response = "";
try {
url = new URL(requestURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
String line;
BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line=br.readLine()) != null) {
response+=line;
}
}
else {
response="";
}
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
..........
private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException{
StringBuilder result = new StringBuilder();
boolean first = true;
for(Map.Entry<String, String> entry : params.entrySet()){
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
return result.toString();
}
答案 1 :(得分:3)
使用Volley怎么样?这似乎是URLConnection的一个非常好的选择。它在排队请求方面有很多好处。
答案 2 :(得分:0)
使用此httpmime-4.1-beta1.jar 试试此代码: -
String url = "http://www.yoursite.com/script.php";
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost postMethod = new HttpPost(url);
MultipartEntity entity = new MultipartEntity();
try
{
entity.addPart("id", new StringBody("123"));
entity.addPart("stringdata", new StringBody("AndDev is Cool!"));
postMethod.setEntity(entity);
HttpResponse response;
response = client.execute(postMethod);
String result = EntityUtils.toString(response.getEntity());
JSONArray ja = new JSONArray(result);
// ITERATE THROUGH AND RETRIEVE CLUB FIELDS
int n = ja.length();
for (int i = 0; i < n; i++)
{
// GET INDIVIDUAL JSON OBJECT FROM JSON ARRAYJSONObject jo = ja.getJSONObject(i);
// RETRIEVE EACH JSON OBJECT'S FIELDS
String status = jo.getString("status");
// Log.e("status",status);
}
}
catch (Exception e)
{
e.printStackTrace();
}