java代码模拟http请求

package com.sand.app.controller;

import java.io.File;


import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
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 com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Test{
	
	//public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token";// 


	    public static final String UPLOAD_IMAGE_URL = "http://localhost:8080/new_ecmis/contract/saveImportContractdata";// 上传多媒体文件
	   // public static final String APP_ID = "wxa549b28c24cf341e";
	  //  public static final String SECRET = "78d8a8cd7a4fa700142d06b96bf44a37";


	/**
     * 上传多媒体文件
     * 
     * @param url
     *            访问url
     * @param access_token
     *            access_token
     * @param type
     *            文件类型
     * @param file
     *            文件对象
     * @return
     */
    public static String uploadImage(String url, String access_token,
            String type, File file)
    {
        org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
        String data = "{'bmShop':{'shopRegName':'1178_1','shopType':null,'shopNature':'','shopCorp':'123','corpCretType':'3','corpCretNo':'1231','bmBusinessLicense':{'businessLicenseType':'1','businessLicense':'330181600707204'}},'joinType':'3','unionpaySysNo':28,'posType':'7','mccCode':'5813','urgentFlg':'0','specialShopFlg':'2','signSpecialFlg':'0','signFrom':'1','agentSysNo':'','agentEmp':'','subComp':999,'dsDeveloper':14440,'shopItem':'','accountClearingLevel':'2','rateFlg':'2','shopLinkman':'qwe','shopLinkmanMobile':'13111111111','shopLinkmanAreaCode':'010','shopLinkmanTel':'123123','financeFlg':'0','financeLinkman':'qwe','financeLinkmanMobile':'13111111111','financeLinkmanAreaCode':'010','financeLinkmanTel':'123123','signRemark':'','splittingRemark':'','commissionRemark':'','clearingCycle':1,'holidayTransfer':'0','thirdPartyClearingTransferer':'0','clearingRemark':'','centralizePay':'0','fineMerchant':'0','signCardType':'1','eighteenDomain':'','transactionTypeFlg':'2','transactionType':'','oneMaxMonery':'','creditCardFlg':'','t0Flg':'','t0OneMaxMonery':'','t0FactorageMin':'','t0DayMaxMonery':'','shopOperateName':'sdf','shopOperateAddr':'test','bmBranchs':[{'branchName':'sdf','branchAddr':'test','branchAreaCode':'010','branchTel':'123123','linkMan':'qwe','linkmanMobile':'13111111111','bmTerminals':[{'bmAccount':{'openType':'1','accountName':'外部录入测试2','accountBank':'华夏银行股份有限公司太原漪汾街支行','accountBankCode':'304161035810','account':'123'},'bmRateInfos':[{'spStatus':'1','rateType':'1','nratePer':'0.78','nrateYuan':'99999','authorizationNratePer':'1.0','authorizationNrateYuan':'99999'},{'spStatus':'1','rateType':'2','nratePer':'0.78','nrateYuan':'99999','authorizationNratePer':'1.0','authorizationNrateYuan':'99999'}],'printShopName':'sdf','devType':'','fixedPosNum':1,'movePosNum':'','mposNum':'','servModel':33,'transactionType':'1'}]}]}";
        String uploadurl = String.format("%s?access_token=%s&type=%s", url, access_token, type);
        System.out.println(url);
        PostMethod post = new PostMethod(url);
        NameValuePair[] posData = { new NameValuePair("data", "data"), new NameValuePair("test", "test")}; 
        // 把参数值放入postMethod中 
        post.setRequestBody(posData);
        post.setRequestHeader(
                        "User-Agent",
                        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0");
        post.setRequestHeader("Host", "file.api.weixin.qq.com");
        post.setRequestHeader("Connection", "Keep-Alive");
        post.setRequestHeader("Cache-Control", "no-cache");
        System.out.println(post.getParams());
        String result = null;
        try
        {
            if (file != null && file.exists())
            {
                FilePart filepart = new FilePart("media", file, "image/jpeg",  "UTF-8");
                Part[] parts = new Part[] { filepart };
                MultipartRequestEntity entity = new MultipartRequestEntity(parts, post.getParams());
                post.setRequestEntity(entity);
                int status = client.executeMethod(post);
                if (status == HttpStatus.SC_OK)
                {
                    String responseContent = post.getResponseBodyAsString();
                    JsonParser jsonparer = new JsonParser();// 初始化解析json格式的对象
                    JsonObject json = jsonparer.parse(responseContent).getAsJsonObject();
                    
                    System.out.println(json);
                    if (json.get("errcode") == null)// {"errcode":40004,"errmsg":"invalid media type"}
                    { // 上传成功  {"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
                        result = json.get("media_id").getAsString();
                    }
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            return result;
        }
    }
    
    public static void main(String[] args) throws Exception
    {
        //String accessToken = getToken(GET_TOKEN_URL, APP_ID, SECRET);// 获取token在微信接口之一中的方法获取token
        String accessToken = "gXx5E_vM-_EVOkvqc3dDOdtFTtJzNKdoMQ077hQSokigLBqgkiBBXxU8VLZakIv4oOK7Gi-8ASjPmIbK230zGpnX8SdbBAcq-rfSrlXkhpV7eKKpVjo5tyI-5FjpsHxdQVGcAFACHS";// 获取token在微信接口之一中的方法获取token
        if (accessToken != null)// token成功获取
        {
            System.out.println(accessToken);
            File file = new File("D:" + File.separator + "5292370_116x86_0.jpg"); // 获取本地文件
            String id = uploadImage(UPLOAD_IMAGE_URL, accessToken, "image",
                    file);// 上传文件
            if (id != null)
                System.out.println(id);
        }
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值