如何在Android中发送POST方法,一个参数需要是字符串,另一个JSON对象?

如何在Android中发送POST方法,一个参数需要是字符串,另一个JSON对象?,android,Android,如何在Android中发送POST方法,其中一个参数需要 字符串和另一个JSON对象 字符串参数为“age” JSONObject createRequest=new JSONObject(); 试一试{ createRequest.put(“ID”,2173); createRequest.put(“名称”、“Munja”); createRequest.put(“地址”,“纽约”); }捕获(JSONException e){ //TODO自动生成的捕捉块 e、 printStackTrac

如何在Android中发送POST方法,其中一个参数需要 字符串和另一个JSON对象

字符串参数为“age”

JSONObject createRequest=new JSONObject();
试一试{
createRequest.put(“ID”,2173);
createRequest.put(“名称”、“Munja”);
createRequest.put(“地址”,“纽约”);
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
//添加您的数据
List nameValuePairs=新的ArrayList(2);
//添加(新的BasicNameValuePair(“客户端”,createRequest.toString());
添加(新的BasicNameValuePair(“年龄”,“21”));
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
StringEntity se=新的StringEntity(createRequest.toString());
setContentType(新的BasicHeader(HTTP.CONTENT_TYPE,“application/json”);
httppost.setEntity(se);
//执行HTTP Post请求
HttpResponse response=httpclient.execute(httppost);

但是它不工作,接收400,就像它的格式不好一样。

使用
httpost.setEntity(新的UrlEncodedFormEntity(nvps,HTTP.UTF_8))

并删除内容类型:

DefaultHttpClient httpclient = null;
    boolean success = false;

    try {           

        httpclient = new DefaultHttpClient();

        String url = mDataSupplier.getURL();


        HttpGet httpget = new HttpGet(url);

        HttpResponse response = httpclient.execute(httpget);
        HttpEntity entity = response.getEntity();

        if (entity != null) {
            entity.consumeContent();
        }


        HttpPost httpost = new HttpPost(url);

        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        nvps.add(new BasicNameValuePair("client", createRequest.toString()));


        httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));


        response = httpclient.execute(httpost);

        entity = response.getEntity();

        if (entity != null) {

            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();

            if(statusCode != 200){
                mResErr.onErrorResponse(statusCode);                    
            }

            InputStream is = entity.getContent();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            while ( (line = br.readLine()) != null) {
                //System.out.println("Data Sender: " +  line);

                if(!line.trim().equals("")){

                }           

            }
            is.close();

            //entity.consumeContent();
        } else {

        }
        success = true;         

    } catch (Exception e) {
        mResErr.onErrorResponse(e);
        e.getStackTrace();
    }

    if (httpclient != null) {
        // resource cleanup
        httpclient.getConnectionManager().shutdown();
    }
DefaultHttpClient-httpclient=null;
布尔成功=假;
试试{
httpclient=新的DefaultHttpClient();
字符串url=mDataSupplier.getURL();
HttpGet HttpGet=新的HttpGet(url);
HttpResponse response=httpclient.execute(httpget);
HttpEntity=response.getEntity();
如果(实体!=null){
entity.consumercontent();
}
HttpPost HttpPost=新的HttpPost(url);
List-nvps=newarraylist();
添加(新的BasicNameValuePair(“客户端”,createRequest.toString());
setEntity(新的UrlEncodedFormEntity(nvps,HTTP.UTF_8));
response=httpclient.execute(httpost);
entity=response.getEntity();
如果(实体!=null){
StatusLine StatusLine=response.getStatusLine();
int statusCode=statusLine.getStatusCode();
如果(状态代码!=200){
mResErr.onErrorResponse(状态代码);
}
InputStream=entity.getContent();
InputStreamReader isr=新的InputStreamReader(is);
BufferedReader br=新的BufferedReader(isr);
字符串行=null;
而((line=br.readLine())!=null){
//System.out.println(“数据发送器:“+行”);
如果(!line.trim()等于(“”){
}           
}
is.close();
//entity.consumercontent();
}否则{
}
成功=真实;
}捕获(例外e){
mResErr.onErrorResponse(e);
e、 getStackTrace();
}
if(httpclient!=null){
//资源清理
httpclient.getConnectionManager().shutdown();
}
公共字符串SendHttpPost(字符串URL,JSONObject jsonObjSend)抛出ClientProtocolException,IOException{
DefaultHttpClient httpclient=新的DefaultHttpClient();
HttpPost httpPostRequest=新的HttpPost(URL);
jsonObjSend.length();
List nameValuePairs=新的ArrayList(jsonObjSend.length());
添加(新的BasicNameValuePair(“数据”,jsonObjSend.toString());
UrlEncodedFormEntity en=新的UrlEncodedFormEntity(nameValuePairs);
en.getContent();
httpPostRequest.getParams().setParameter(“http.socket.timeout”,新整数(600000));
httpPostRequest.setEntity(en);
long t=System.currentTimeMillis();
HttpResponse response=(HttpResponse)httpclient.execute(httpPostRequest);
responses=convertEntityToString(response.getEntity(),“UTF-8”);
回应;
}
查看此项
DefaultHttpClient httpclient = null;
    boolean success = false;

    try {           

        httpclient = new DefaultHttpClient();

        String url = mDataSupplier.getURL();


        HttpGet httpget = new HttpGet(url);

        HttpResponse response = httpclient.execute(httpget);
        HttpEntity entity = response.getEntity();

        if (entity != null) {
            entity.consumeContent();
        }


        HttpPost httpost = new HttpPost(url);

        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        nvps.add(new BasicNameValuePair("client", createRequest.toString()));


        httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));


        response = httpclient.execute(httpost);

        entity = response.getEntity();

        if (entity != null) {

            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();

            if(statusCode != 200){
                mResErr.onErrorResponse(statusCode);                    
            }

            InputStream is = entity.getContent();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            while ( (line = br.readLine()) != null) {
                //System.out.println("Data Sender: " +  line);

                if(!line.trim().equals("")){

                }           

            }
            is.close();

            //entity.consumeContent();
        } else {

        }
        success = true;         

    } catch (Exception e) {
        mResErr.onErrorResponse(e);
        e.getStackTrace();
    }

    if (httpclient != null) {
        // resource cleanup
        httpclient.getConnectionManager().shutdown();
    }
public String SendHttpPost(String URL, JSONObject jsonObjSend) throws ClientProtocolException, IOException  {


            DefaultHttpClient httpclient = new DefaultHttpClient();
            HttpPost httpPostRequest = new HttpPost(URL);

            jsonObjSend.length();

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(jsonObjSend.length());
            nameValuePairs.add(new BasicNameValuePair("data", jsonObjSend.toString()));

            UrlEncodedFormEntity en=new UrlEncodedFormEntity(nameValuePairs);
            en.getContent();
            httpPostRequest.getParams().setParameter("http.socket.timeout", new Integer(600000));
            httpPostRequest.setEntity(en);
            long t = System.currentTimeMillis();
            HttpResponse response = (HttpResponse) httpclient.execute(httpPostRequest);

            responses = convertEntityToString(response.getEntity(), "UTF-8");

        return responses;
    }