如何调用具有多个参数的HTTP POST请求?

埃兰戈

我怎么能调用带有多个参数的http post restst。

像这样

  WebClient webClient = new WebClient();
            webClient.Headers["Content-type"] = "application/json";
            webClient.Encoding = Encoding.UTF8;
            webClient.UploadStringCompleted += new      UploadStringCompletedEventHandler(wc_UploadStringCompleted);
            webClient.UploadStringAsync(new Uri(URL), "POST", JSON);

这个在C#中。但我想要在android中

我已经尝试过了

  public String postServiceCall(String paraURL,JSONArray jsonParams, String usrId, String syncDt){
    TAG = "makeHttpRequestJSONObject";    
    Log.d(MODULE, TAG + " called");

    String json = "";  
    InputStream is = null;

    try{                        
        HttpParams httpParams = new BasicHttpParams();
        int timeoutConnection = 3000;
        HttpConnectionParams.setConnectionTimeout(httpParams, timeoutConnection);

        int timeoutSocket = 5000;
        HttpConnectionParams.setSoTimeout(httpParams, timeoutSocket);

        DefaultHttpClient httpClient = new DefaultHttpClient(httpParams);
        String params = "UserId="+ usrId +"&SyncDate="+syncDt;  
        String encodedUrl = URLEncoder.encode (params,"UTF-8");
        HttpPost httpPost = new HttpPost(paraURL+encodedUrl);
        httpPost.setHeader( "Content-Type", "application/json" );

        Log.v(MODULE, TAG + ", POST paraURL " + (paraURL+encodedUrl));      
        Log.v(MODULE, TAG + ", POST paraURL jsonParams.toString() " + (jsonParams.toString()));

        httpPost.setEntity(new ByteArrayEntity(jsonParams.toString().getBytes("UTF8")));  

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

        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 = sb.toString().trim();
        json = json.substring(1,3);
        Log.v(MODULE, TAG + ", json data " + json);

    } catch (Exception e){
        Log.e(MODULE, TAG + "Exception Occurs " + e);
        json = "";
    }

    return json;
}
}

此代码无法正常工作。此代码仅发布json。这里的userid和syncdate不会发送到服务器端

埃兰戈

请检查一下

String encodedUrl = URLEncoder.encode (params,"UTF-8");

例如,您的代码返回的网址是这样的

输入“ http://test.com/ttttt?query=jjjj测试”输出“ http://test.com/ttttt?query=jjjj+test

但是你需要这样的网址

输出“ http://test.com/ttttt?query=jjjj%20test

因此您可以尝试使用此功能进行url编码

public String parseUrl(String surl) throws Exception
{
    URL u = new URL(surl);
    return new URI(u.getProtocol(), u.getAuthority(), u.getPath(), u.getQuery(), u.getRef()).toString();
}

或者

这可以帮助您适应更高的版本

public String parseURL(String url, Map<String, String> params)
{
    Builder builder = Uri.parse(url).buildUpon();
    for (String key : params.keySet())
    {
        builder.appendQueryParameter(key, params.get(key));
    }
    return builder.build().toString();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何调用具有多个参数的HTTP POST请求?

来自分类Dev

调用具有多个字符串参数的Post Web API?

来自分类Dev

具有不同参数改造的多个 Post 请求

来自分类Dev

发生多个POST请求

来自分类Dev

角度HTTP POST请求

来自分类Dev

HTTP POST请求问题

来自分类Dev

如何生成POST请求

来自分类Dev

无法使用具有多个参数的后期请求以正确的方式发送应用程序

来自分类Dev

在 get 请求中嵌套 http post 请求

来自分类Dev

用于调用具有基本身份验证和分段文件上传的 POST 请求的 curl 命令

来自分类Dev

如何调用具有多个参数的过程?

来自分类Dev

如何调用具有多个参数的视图

来自分类Dev

POST请求中参数的位置

来自分类Dev

对 Paypal 的 POST 请求忽略参数

来自分类Dev

Ajax:POST 请求的空参数

来自分类Dev

多个 POST 请求的异步问题

来自分类Dev

从Nifi配置HTTP POST请求

来自分类Dev

Android HTTP Post授权请求

来自分类Dev

android - http post请求设计

来自分类Dev

Firebase:响应 http POST 请求

来自分类Dev

无法发出 HTTP post 请求

来自分类Dev

Aws LAMBDA:HTTP POST 请求

来自分类Dev

Android Http 请求 POST JSON

来自分类常见问题

Angular2-Http POST请求参数

来自分类Dev

无法使用 http post 传递请求参数

来自分类Dev

Swift 同步发送多个 HTTP POST 请求

来自分类Dev

具有基本身份验证和多个参数的Ruby Post请求

来自分类Dev

没有NSURLConnectionDelegate的POST请求

来自分类Dev

“ POST请求也具有$ _GET参数”的含义是什么