Android |将“POST”JSON数据发送到服务器

时间:2016-01-01 10:13:26

标签: java android

我使用此代码使用android将发布数据发送到服务器。任何人都可以给我任何想法或你的样本如何发送POST或GET json数据到服务器TOMCAT ..! 步骤提示:

  1. 创建HttpClient
  2. 向指定的网址发送POST请求
  3. 构建jsonObject
  4. 将JSONObject转换为JSON为String
  5. 将json设置为StringEntity
  6. 设置httpPost实体
  7. 设置一些标题以通知服务器有关内容的类型
  8. 对指定的URL执行POST请求
  9. 以inputStream
  10. 接收回复
  11. 将inputstream转换为字符串
  12. 返回结果

     stfalcon_tinymce:
            theme:
                advanced:
                    relative_urls: false
                    remove_script_host: false
                    convert_urls: true
                    document_base_url: 'http://your.domain.com'
    

3 个答案:

答案 0 :(得分:2)

您正在使用HttpClient。实际上Android会弃用你需要的HttpClient HttpClient" HttpURLConnection"对于POST请求检查以下示例之一:here

<强>更新

您需要为示例代码添加以下两行以满足您的要求。

conn.addRequestProperty("Accept", "application/json");
conn.addRequestProperty("Content-Type", "application/json");

在给定的示例代码中:

conn.setDoOutput(true);
//Add the following line to the given sample
===============> updated for JSON POST <========================= 
conn.addRequestProperty("Accept", "application/json");
conn.addRequestProperty("Content-Type", "application/json");
===============> updated for JSON POST <========================= 
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("firstParam", paramValue1));
params.add(new BasicNameValuePair("secondParam", paramValue2));
params.add(new BasicNameValuePair("thirdParam", paramValue3));

答案 1 :(得分:1)

如果你需要获取数据,试试这个......

try{
    URL url = new URL("http://www.youraddresheredude.com/andthefile");
    //Open the connection here, and remember to close it when job its done.
    URLConnection conn = url.openConnection();
    conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
    conn.setDoOutput(true);

    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    //theJSONYouWantToSend should be the JSONObject as String
    wr.write(convertStandardJSONString(theJSONYouWantToSend));  //<--- sending data.

    wr.flush();

    //  Here you read any answer from server.
    BufferedReader serverAnswer = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = serverAnswer.readLine()) != null) {

        System.out.println("LINE: " + line); //<--If any response from server
        //use it as you need, if server send something back you will get it here.
    }

    wr.close();
    serverAnswer.close();

} catch (Exception e) {
    Log.e("Cuack", "Something its wrong");
}

答案 2 :(得分:-1)

public class JSONParser {

static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
static String responseString;

// constructor
public JSONParser() {

}

// function get json from url
// by making HTTP POST or GET mehtod
public static JSONObject makeHttpRequest(String url, String method,
                                         List<NameValuePair> params) {

    // Making HTTP request
    Log.d("json class", url + "," + method + "," + params.toString());
    try {

        // check for request method
        if (method == "POST") {
            // request method is POST
            // defaultHttpClient
            Log.d("json class", "post method");
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            Log.d("json class", "HttpPost" + httpPost);
            httpPost.setEntity(new UrlEncodedFormEntity(params));
            Log.d("json class", "setentity");
            HttpResponse httpResponse = httpClient.execute(httpPost);

            ByteArrayOutputStream out = new ByteArrayOutputStream();
            int responce_code = httpResponse.getStatusLine()
                    .getStatusCode();
            Log.d("responce code", "response method");
            Log.d("responce code", "" + responce_code);
            StatusLine statusLine = httpResponse.getStatusLine();

            if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                Log.i("RESPONSE", "6");
                /*
                 * httpResponse.getEntity().writeTo(out); out.close();
                 * String responseString = out.toString(); Log.i("RESPONSE",
                 * ""+responseString);
                 */
                // ..more logic
            } else {
                Log.d("RESPONSE", "null pointer exception");
                // Closes the connection.
                httpResponse.getEntity().getContent().close();
                throw new IOException(statusLine.getReasonPhrase());
            }

            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } else if (method == "GET") {
            // request method is GET
            DefaultHttpClient httpClient = new DefaultHttpClient();
            String paramString = URLEncodedUtils.format(params, "utf-8");
            url += "?" + paramString;
            Log.i("url", url);
            HttpGet httpGet = new HttpGet(url);
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            HttpResponse httpResponse = httpClient.execute(httpGet);
            int responce_code = httpResponse.getStatusLine()
                    .getStatusCode();
            Log.d("responce code", "response method");
            Log.d("responce code", "" + responce_code);

            StatusLine statusLine = httpResponse.getStatusLine();

            if (statusLine.getStatusCode() == HttpStatus.SC_OK) {

                Log.d("RESPONSE", "6");
                httpResponse.getEntity().writeTo(out);
                Log.d("RESPONSE", "7");
                out.close();
                Log.d("RESPONSE", "8");
                responseString = out.toString();
                Log.d("RESPONSE", "9");
                Log.i("RESPONSE", "" + responseString);
                // ..more logic
            } else {
                Log.d("RESPONSE", "null pointer exception");
                // Closes the connection.
                httpResponse.getEntity().getContent().close();
                throw new IOException(statusLine.getReasonPhrase());
            }
            /*
             * HttpEntity httpEntity = httpResponse.getEntity(); is =
             * httpEntity.getContent();
             */
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        /*
         * BufferedReader reader = new BufferedReader(new InputStreamReader(
         * is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder();
         * String line = null; while ((line = reader.readLine()) != null) {
         * sb.append(line + "\n"); } is.close();
         */
        json = responseString.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {

        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    // return JSON String
    return jObj;
}

}