`

使用了httpclient实现的上传商品的demo

    博客分类:
  • java
 
阅读更多
package com.taobao.top.sample.uploadItem;

import java.io.File;
import java.io.IOException;
import java.security.MessageDigest;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
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;

/**
 * @author liboqi
 * 
 */
public class UploadItemByZixue {

        /**
         * @param args
         * @throws IOException
         * @throws HttpException
         */
        // XXX 请更换成 "http://sip.alisoft.com/sip/rest/";
        String url = "http://10.2.224.46:8180/sip/rest/";
        // String url = "http://sip.alisoft.com/sip/rest/";
        // XXX 请更换成自己的secret
        String secret = "test_secret";
        // XXX 请更换成自己的appkey
        String appkey = "100";

        public static void main(String[] args) throws HttpException, IOException {
                // 新增一个商品,返回新增商品的iid
                new UploadItemByZixue().addItemIncludeImage();

        }

        /**
         * 签名方法
         * 
         * @param params
         * @param secret
         * @return
         */
        @SuppressWarnings("unchecked")
        public static String signature(Map params, String secret) {
                String result = null;

                if (params == null)
                        return result;
                params.remove("sip_sign");

                Map treeMap = new TreeMap();
                treeMap.putAll(params);

                Iterator iter = treeMap.keySet().iterator();

                StringBuffer orgin = new StringBuffer(secret);

                while (iter.hasNext()) {
                        String name = (String) iter.next();
                        orgin.append(name).append(params.get(name));
                }

                try {
                        MessageDigest md = MessageDigest.getInstance("MD5");
                        result = byte2hex(md.digest(orgin.toString().getBytes("utf-8")));
                } catch (Exception ex) {
                        throw new java.lang.RuntimeException("sign error !");
                }

                return result;
        }

        /**
         * 
         * 二行制转字符串
         * 
         * @param b
         * 
         * @return
         * 
         */
        public static String byte2hex(byte[] b) {
                StringBuffer hs = new StringBuffer();
                String stmp = "";
                for (int n = 0; n < b.length; n++) {
                        stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
                        if (stmp.length() == 1)
                                hs.append("0").append(stmp);
                        else
                                hs.append(stmp);
                }
                return hs.toString().toUpperCase();

        }

        private final DateFormat ymdhmsFormat = new SimpleDateFormat(
                        "yyyy-MM-dd HH:mm:ss");

        private final String[] EMPTY_STRING_ARRAY = new String[0];
        
        
        /**
         * 添加一个商品,有图片
         * 
         * @param nick
         * @throws HttpException
         * @throws IOException
         */
        public void addItemIncludeImage() throws HttpException, IOException {
                Map<String, String> getSign = new HashMap<String, String>();
                getSign.put("sip_apiname", "taobao.item.add");
                getSign.put("sip_appkey", appkey);
                getSign.put("sip_sessionid", "45613");
                getSign.put("sip_timestamp", ymdhmsFormat.format(new Date()));

                getSign.put("v", "1.0");
                getSign.put("type", "fixed");
                getSign.put("cid", "1512");
                getSign.put("props", "10005:10027;10006:10086;20930:32998;20879:32559");
                getSign.put("desc", "just so so");
                getSign.put("title", "zixue-test");
                getSign.put("num", "12");
                getSign.put("price", "101.23");
                getSign.put("stuff_status", "new");
                getSign.put("approve_status", "instock");
                getSign.put("location.state", "浙江");
                getSign.put("location.city", "杭州");

                Set<String> keySet = getSign.keySet();
                String[] names = keySet.toArray(EMPTY_STRING_ARRAY);
                Part[] part = new Part[getSign.size() + 2];
                int i = 0;
                for (; i < getSign.size(); i++) {
                        StringPart tmp = new StringPart(names[i], getSign.get(names[i]),
                                        "utf-8");
                        part[i] = tmp;
                }
                part[i++] = new StringPart("sip_sign", signature(getSign, secret));
                part[i] = new FilePart("image", new File(this.getClass().getResource(
                                "item_pic.jpg").getFile()));

                PostMethod postMethod = new PostMethod(url);
                MultipartRequestEntity mrp = new MultipartRequestEntity(part,
                                postMethod.getParams());

                postMethod.setRequestEntity(mrp);

                // 执行postMethod
                HttpClient httpClient = new HttpClient();
                httpClient.getParams().setContentCharset("utf-8");
                httpClient.executeMethod(postMethod);
                Header responseHeader = postMethod.getResponseHeader("sip_status");
                if (responseHeader != null) {
                        String status = responseHeader.getValue();
                        if ("9999".equals(status)) {

                        } else if ("1004".equals(status)) {
                                System.out.println("sip:请在浏览器里访问淘宝登录页面:"
                                                + postMethod.getResponseHeader("sip_isp_loginurl")
                                                                .getValue());
                        } else {
                                System.out.println("sip:其他错误:"
                                                + postMethod.getResponseHeader("sip_error_message")
                                                                .getValue());
                        }
                }
                System.out.println(postMethod.getResponseBodyAsString());
                postMethod.releaseConnection();
        }
}

 有技术兴趣的 请加28830308群.

分享到:
评论

相关推荐

    Android使用HttpClient实现上传下载功能并监控进度

    总之,使用HttpClient在Android上实现文件的上传和下载,并监控进度,是一个涉及网络编程、文件操作以及UI更新的综合任务。理解这些基本原理和技巧,将有助于你在实际开发中构建更高效、用户体验更好的应用程序。

    安卓文件下载上传解压相关-Android使用HttpClient实现上传下载功能并监控进度.rar

    这个压缩包"安卓文件下载上传解压相关-Android使用HttpClient实现上传下载功能并监控进度.rar"提供了使用HttpClient实现这些功能的示例代码。HttpClient是一个Java库,它允许开发者创建HTTP请求,支持包括下载和上传...

    使用HttpClient实现文件的上传所需lib

    在Java开发中,HttpClient是一个非常重要的库,它允许...通过理解和熟练运用这些知识点,开发者能够使用HttpClient有效地实现文件上传功能。在实际项目中,还需要结合具体的业务需求和服务器端接口来调整和优化代码。

    httpclient调用接口demo

    本demo有两个例子test是作为服务端开启的,httpclient是客户端调用的,模拟服务端的test在启动后是没有界面的,要加上id才能看到json数据,httpclient的HttpClient33.java是测试类,最后的结果是接受到一个对象。...

    httpClient完整请求Demo

    HttpClient是Apache基金会开发的一个Java库,用于执行HTTP请求。...本示例将深入讲解如何使用HttpClient进行完整的HTTP请求,同时结合JSON数据处理,因为"json...希望这个Demo能帮助你在实际项目中更好地运用HttpClient。

    httpclient(springboot)demo

    本篇将详细介绍如何在Spring Boot项目中整合HttpClient,以及这个整合的示例(demo)所涉及的关键知识点。 首先,让我们理解Spring Boot与HttpClient的整合过程: 1. **添加依赖**:在`pom.xml`文件中,你需要引入...

    HttpClient的简单demo

    这是一个android的HttpClient简单demo,实现了post与get两种方式,包括完整的客户端和服务器端程序,数据库采用的是MySql数据库,数据库部分请用户自己完成,都是最简单的,我已经测试通过,这是我一天的成果,参考...

    httpClient post 上传 下载 图片

    下面将详细介绍如何使用HttpClient进行图片的上传和下载,并探讨如何修改上传和下载的URI。 1. **HttpClient上传图片**: - 首先,我们需要创建一个`HttpPost`对象,设置目标URI,这通常是一个服务器端处理图片...

    httpClient4.3 Jar包 demo

    在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...

    httpclient使用post方法上传多个图片个其他参数的demo源码

    在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...

    使用httpclient4.3.2来实现微信临时素材的上传

    使用httpclient4.3.2来实现微信临时素材的上传

    httpclient 文件上传 下载

    HTTPClient 4提供了`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类来构建多部分表单数据,用于上传文件。首先,你需要创建一个`FileEntity`对象,指定要上传的文件路径,然后将其添加到`...

    httpClient文件上传

    使用httpclient上传文件, CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    采用httpclient上传数据

    httpclient上传数据,通过httpclient在Android上实现上传数据

    HttpClient Demo

    这个"HttpClient Demo"工程应该包含了示例代码,展示了如何使用HttpClient进行HTTP通信。你可以从中学习到HttpClient的基本用法和高级特性,并在自己的项目中应用这些知识。通过阅读和运行这些示例,你可以更好地...

    HttpClient_Demo

    HttpClient_Demo是一个示例项目,它展示了如何在Java应用程序中使用Apache HttpClient库来实现HTTP客户端功能。在这个项目中,我们可以学习到以下关键知识点: 1. **HttpClient库介绍**:HttpClient是Apache软件...

    HttpClient实现远程下载

    通过HttpClient实现远程下载,本例子通过java代码实现

    httpclient Demo 案例 含jar

    在这个“httpclient Demo 案例 含jar”中,我们将深入探讨如何使用HttpClient来处理POST请求时传递参数的字符原样问题,即避免参数被自动处理或转换。 HttpClient 4.5版本是一个稳定且广泛使用的版本,它包含了各种...

    httpclient Demo

    2. 使用HttpClient执行请求: ```java CloseableHttpResponse response = httpClient.execute(httpGet); ``` 3. 处理响应: ```java HttpEntity entity = response.getEntity(); if (entity != null) { // 读取响应...

    四、使用HttpClient上传测试文件服务器

    下面我们将详细介绍如何使用HttpClient进行文件上传: 1. **配置HttpClient**: 首先,我们需要创建一个HttpClient实例并进行配置。这包括设置连接超时、重试策略、HTTP连接管理器等。例如,我们可以使用`...

Global site tag (gtag.js) - Google Analytics