我的J2EE应用程序能够从JSP页面接收POST请求,没问题.
但是如果我使用另一个java应用程序发送POST请求,则收到的参数不是UTF-8字符串.
这里有我的代码:
URL url = new URL("http://localhost:8080/ITUNLPWebInterface/SimpleApi"); HttpURLConnection cox = (HttpURLConnection) url.openConnection(); cox.setDoInput(true); cox.setDoOutput(true); cox.setRequestMethod("POST"); cox.setRequestProperty("Accept-Charset","UTF-8"); cox.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); cox.setRequestProperty("charset","UTF-8"); DataOutputStream dos = new DataOutputStream(cox.getoutputStream()); String query = "tool=ner&input=şaşaşa"; dos.writeBytes(query); dos.close();
难道我做错了什么?
感谢您的回复
解决方法
这项工作!!!
package com.erenerdogan.utils; import com.erenerdogan.webservice.ServiceInterface; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.http.httpentity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.httpconnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; /** * * @author erenerdogan */ public class WebService { private String server; public WebService(String server) { this.server = server; } private HttpPost createPostRequest(String method,Map<String,String> paramPairs){ // Creating HTTP Post HttpPost httpPost = new HttpPost(server + "/" + method); // Building post parameters List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(paramPairs.size()); for (String key : paramPairs.keySet()){ nameValuePair.add(new BasicNameValuePair(key,paramPairs.get(key))); System.out.println("Key : "+ key + " - Value : "+ paramPairs.get(key) ); } // Url Encoding the POST parameters try { httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair,"UTF-8")); } catch (UnsupportedEncodingException e) { // writing error to Log e.printstacktrace(); } return httpPost; } public String callServer(String method,String> paramPairs) throws ClientProtocolException,IOException{ // Creating HTTP client HttpClient httpClient = new DefaultHttpClient(); HttpParams httpParameters = httpClient.getParams(); httpconnectionParams.setConnectionTimeout(httpParameters,10 * 1000); httpconnectionParams.setSoTimeout(httpParameters,3 * 1000); HttpResponse httpResponse = httpClient.execute(createPostRequest(method,paramPairs)); httpentity httpentity = httpResponse.getEntity(); String xml = EntityUtils.toString(httpentity); return xml; } }
原文地址:https://www.jb51.cc/java/127468.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。