[100分]大家帮我看下这个乱码是那里产生的?
和万网做接口对应,结果发现发过去的参数有乱码,
由于这个JSP是万网提供的看的我似懂非懂,不太明白
里面无缘无故多了个乱码也一起发送出去了,现在希望找到这个乱码是什么时候产生的,删除他即可(或者不产生乱码即可)
下面是JSP文件,这个放在工程下,浏览下在TOMCAT的控制台就能看到这个乱码,希望有高手帮我测试下看下问题
解决后100分送上
<%@ page contentType="text/html;charset=gbk" pageEncoding="gbk" import="java.util.*,java.net.*,java.io.*"%>
<%
//获得表单所有的参数名称
Enumeration param_names = request.getParameterNames();
//定义一个hash,将所有参数与对应值保存的这个hash中
Hashtable hash_data = new Hashtable();
//遍历参数并保存在hash中
while(param_names.hasMoreElements()) {
String name = (String)param_names.nextElement();
String value = request.getParameter(name);
hash_data.put(name,value);
}
//创建一个表单发送对象
FormPoster poster = new FormPoster(hash_data);
out.write("正在发送数据....<br>");
try {
//发送并取得响应
String responseStr = poster.post();
out.write("发送成功.<br>");
out.write("接收的数据:<br>");
out.write("<pre>" + responseStr + "</pre>");
}catch(Exception e ){
//exception deal
System.out.println(e);
out.write("发送数据失败:<br>" + e.getMessage());
}
%>
<%!
class FormPoster {
private Hashtable data = null;
private String post_url="http://api.hichina.com:8081/wwwnetcn.aspx"; //api 的地址以万网最终公布的为准
private String userid = "20645116";
private String passwd = "1111";
private String email="test@net.cn";
private String encoding = "GB2312";
public FormPoster(Hashtable postData){
this.data = postData;
}
public String post() throws IOException , Exception {
addExtendInfo();
URL url = new URL(post_url);
if(!url.getProtocol().toLowerCase().startsWith("http")) {
throw new IllegalArgumentException ("Posting only works for http URLs");
}
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(),encoding);
Enumeration names = data.keys();
while(names.hasMoreElements()) {
String name = (String)names.nextElement();
String value = (String)data.get(name);
String pstr=URLEncoder.encode(name,encoding) + "=" + URLEncoder.encode(value,encoding) + "\r\n";
System.out.print(pstr);
writer.write(pstr);
}
writer.write("\r\n");
writer.flush();
writer.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer resContent = new StringBuffer();
String line;
while ( (line = reader.readLine()) != null) {
resContent.append(line).append("\r\n");
}
reader.close();
return resContent.toString();
}
private void addExtendInfo () {
data.put("userid",userid);
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyyMMddHHmmss");
String current_time = format.format(new Date());
data.put("vtime",current_time);
byte[] auth_info = md5(userid+passwd+email+current_time);
System.out.println(new String(auth_info));
if(auth_info != null)
data.put("userstr",new String(auth_info));
}
private byte[] md5(String s) {
try {
java.security.MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(s.getBytes());
return digest.digest();
} catch (java.security.NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
%>