日期:2014-05-17  浏览次数:20888 次

httpclient post上传图片的问题。
本帖最后由 cnicc 于 2014-03-21 01:35:43 编辑
这个是要post到的接口,https://www.peuland.com/captcha/captchaimg.php

主要功能是将本地验证码图片上传到这个接口,通过其来识别验证码。

表单有用户名user,密码pwd,验证码类型type ,图片img

全部代码如下,执行post提交后,返回结果总是提示 user error。基本可以确定用户密码没错。

百度了下,发现这位同学也有这个问题,不过他是用C#,问题也没解决。
传送门,http://bbs.csdn.net/topics/390606480

怀疑是代码逻辑上有问题。

package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;


import java.util.ArrayList;
import java.util.List;


import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import javax.security.cert.CertificateException;
import javax.security.cert.X509Certificate;


import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.apache.http.NameValuePair;  
import org.apache.http.client.entity.UrlEncodedFormEntity;  
import org.apache.http.message.BasicNameValuePair;  
import org.apache.http.entity.FileEntity;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;  


public class lyg01vote {

/**
 * @param args
 * @throws IOException 
 * @throws ClientProtocolException 
 */

public static class WebClientDevWrapper {  
    public static org.apache.http.client.HttpClient wrapClient(org.apache.http.client.HttpClient base) {  
        try {  
            SSLContext ctx = SSLContext.getInstance("TLS");  
            X509TrustManager tm = new X509TrustManager() {  
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {  
                    return null;  
                }  
                public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}  
                public void checkSe