gpt4 book ai didi

java - 如何使用多个参数调用 HTTP POST 请求?

转载 作者:可可西里 更新时间:2023-11-01 16:42:34 24 4
gpt4 key购买 nike

如何使用多个参数调用 http post 请求。

像这样

  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# 中。但我想要安卓

我已经试过了

  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");

例子你的代码像这样返回 url

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

但是你需要这样的url

输出“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();
}

关于java - 如何使用多个参数调用 HTTP POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27834679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com