android模拟混同表单提交数据(两种方法)坑爹的java混合表单提交

android模拟混合表单提交数据(两种方法)坑爹的java混合表单提交最近在做一个类手机人人的一个项目,后台写

android模拟混合表单提交数据(两种方法)坑爹的java混合表单提交

最近在做一个类似手机人人的一个项目,后台写好以后,我用的是jsp写的,使用的jar包是smartupload。估计java web的人应该都知道这个东西。

然后在web上测试很正常,然后我就拿出我前一段时间写过的代码,结果发现竟然不能用,我不知道是什么情况,但是我觉得我代码没问题,唯一与上次的代码不同的还是后台,后台用的fileUpload但是我觉得应该不影响呀,不明白怎么回事,反正就是用下面代码,可以提交文本数据,图片数据不知道为啥提交不上去。但是之前的那个项目就能提交上去,今天搞了一天终于搞出一个合适的方法。

1.以前的代码,(我觉得代码没问题,这段代码可以实现文本数据的提交,图片数据不知道为啥提交不了,但是不报错。)代码没有注释,不懂的人可以问我。如果有人知道代码为啥不能提交表单数据,谢谢指出,小弟我先谢过了。

import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.net.URLEncoder;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.methods.multipart.FilePart;import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;import org.apache.commons.httpclient.methods.multipart.Part;import org.apache.commons.httpclient.methods.multipart.StringPart;public class HttpUtil2 {public static void main(String[] args) throws Exception {File f = new File("D:/sk.png");PostMethod filePost = new PostMethod("**************************************自己写url");Part[] parts = {new FilePart("filename", f),new StringPart("account", "04101055"),new StringPart("collegeId", "3728"),new StringPart("messageKind", "0"),new StringPart("messageContentText", URLEncoder.encode("我是王玉超,这是我httpUtil2的一个测试", "UTF-8")) };filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));HttpClient clients = new HttpClient();int status = clients.executeMethod(filePost);try {BufferedReader rd = new BufferedReader(new InputStreamReader(filePost.getResponseBodyAsStream(), "UTF-8"));StringBuffer stringBuffer = new StringBuffer();String line;while ((line = rd.readLine()) != null) {stringBuffer.append(line);}rd.close();System.out.println("接受到的流是:" + stringBuffer + "—-" + status);} catch (Exception e) {throw new RuntimeException("error", e);}}}
哪位大神有更好的解决办法赶紧给哥们说说哈。

刚刚把问题解决了。

new StringPart("messageContentText", URLEncoder.encode("王玉超","UTF-8"));将所有的参数的值以byte类型传递过去,还要解码

服务器端再写一句话就行了。入下

URLDecoder.decode(“request.geParamter("name")”, "UTF-8");这样的话就又转回去了,

无论服务器端怎么接受数据,都要把接受来的数据转码一下,如果数据正常,那么就不转吗,如果不正常,就转码,这样做有利于防止意外情况发生。