- 浏览: 33726 次
- 性别:
- 来自: 湖南
文章分类
最新评论
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群.
发表评论
-
HttpClient容易忽视的细节——连接关闭
2012-03-02 09:15 612HttpClient client = new HttpCli ... -
HTTPClient的多线程编程
2012-03-02 09:09 1475Axis2的连接主要采用了HttpClient进行与服务器的服 ... -
HttpClient超时区别
2012-03-02 09:07 1070HttpClient 4 设置超时 httpclient 超时 ... -
HttpClient Theading
2012-03-01 10:49 666有技术兴趣的 请加28830308群. 这篇文章概括了怎样在 ... -
HttpClient使用
2012-03-01 10:43 713有技术兴趣的 请加28830308群. HttpClien ... -
线程请求执行,一个多线程程执行HTTP请求的例子。
2012-03-01 10:40 1752package cn.lake.util; import ... -
httpclient 4 下载 文件
2012-03-01 10:38 938import java.io.File; import ja ... -
socket简介
2012-02-07 10:58 679第一步 充分理解Socket ... -
转载socket
2012-02-07 10:57 559对TCP/IP、UDP、Socket编程这些词你不会很陌生吧? ... -
Java的synchronized关键字:同步机制总结
2012-02-07 10:54 570不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对 ... -
JAVA RMI
2012-02-07 10:53 573Java RMI 指的是远程方法调用 (Remote Meth ... -
JXL生成复杂的EXCEL
2011-12-26 13:52 1375public String ExcelTaskRepo ... -
如何快速的为现有数据库建立数据字典?
2011-12-20 13:55 990大部分项目在验收时都需要向客户提供一份详细的数据字典,而编写数 ... -
在java中获取客户端真实的IP地址
2011-12-20 13:55 552public static String getRemoteA ... -
用JavaMail的API发送邮件
2011-12-20 13:55 5271、MimeMessage的包装类 public c ... -
在项目中整合FreeMarker框架
2011-12-16 15:40 579FreeMarker是一个用Java编写的模板引擎,既可以 ... -
Commons FTP范例
2011-12-16 15:33 501public class FtpUtil { privat ... -
Java实现的图片生成器
2011-12-16 15:32 517一、本图片生成器具有以下功能特性: 1、可以设置图 ... -
jacob学习总结
2011-12-16 15:27 439JACOB 就是 JAVA-COM Bridge的缩写,提供自 ... -
长短信发送范例
2011-12-16 15:25 686一、关键代码: private synchronized v ...
相关推荐
总之,使用HttpClient在Android上实现文件的上传和下载,并监控进度,是一个涉及网络编程、文件操作以及UI更新的综合任务。理解这些基本原理和技巧,将有助于你在实际开发中构建更高效、用户体验更好的应用程序。
这个压缩包"安卓文件下载上传解压相关-Android使用HttpClient实现上传下载功能并监控进度.rar"提供了使用HttpClient实现这些功能的示例代码。HttpClient是一个Java库,它允许开发者创建HTTP请求,支持包括下载和上传...
在Java开发中,HttpClient是一个非常重要的库,它允许...通过理解和熟练运用这些知识点,开发者能够使用HttpClient有效地实现文件上传功能。在实际项目中,还需要结合具体的业务需求和服务器端接口来调整和优化代码。
本demo有两个例子test是作为服务端开启的,httpclient是客户端调用的,模拟服务端的test在启动后是没有界面的,要加上id才能看到json数据,httpclient的HttpClient33.java是测试类,最后的结果是接受到一个对象。...
HttpClient是Apache基金会开发的一个Java库,用于执行HTTP请求。...本示例将深入讲解如何使用HttpClient进行完整的HTTP请求,同时结合JSON数据处理,因为"json...希望这个Demo能帮助你在实际项目中更好地运用HttpClient。
本篇将详细介绍如何在Spring Boot项目中整合HttpClient,以及这个整合的示例(demo)所涉及的关键知识点。 首先,让我们理解Spring Boot与HttpClient的整合过程: 1. **添加依赖**:在`pom.xml`文件中,你需要引入...
这是一个android的HttpClient简单demo,实现了post与get两种方式,包括完整的客户端和服务器端程序,数据库采用的是MySql数据库,数据库部分请用户自己完成,都是最简单的,我已经测试通过,这是我一天的成果,参考...
下面将详细介绍如何使用HttpClient进行图片的上传和下载,并探讨如何修改上传和下载的URI。 1. **HttpClient上传图片**: - 首先,我们需要创建一个`HttpPost`对象,设置目标URI,这通常是一个服务器端处理图片...
在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...
在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...
使用httpclient4.3.2来实现微信临时素材的上传
HTTPClient 4提供了`MultipartEntityBuilder`或`HttpEntityEnclosingRequestBase`类来构建多部分表单数据,用于上传文件。首先,你需要创建一个`FileEntity`对象,指定要上传的文件路径,然后将其添加到`...
使用httpclient上传文件, CloseableHttpClient httpClient = HttpClientBuilder.create().build();
httpclient上传数据,通过httpclient在Android上实现上传数据
这个"HttpClient Demo"工程应该包含了示例代码,展示了如何使用HttpClient进行HTTP通信。你可以从中学习到HttpClient的基本用法和高级特性,并在自己的项目中应用这些知识。通过阅读和运行这些示例,你可以更好地...
HttpClient_Demo是一个示例项目,它展示了如何在Java应用程序中使用Apache HttpClient库来实现HTTP客户端功能。在这个项目中,我们可以学习到以下关键知识点: 1. **HttpClient库介绍**:HttpClient是Apache软件...
使用HTTPClient,你可以方便地实现文件的POST请求(用于上传)和GET请求(用于下载)。 **RESTful风格** RESTful风格的Web服务设计强调资源的概念,通过HTTP方法(如GET、POST、PUT、DELETE)来操作这些资源。在...
在这个“httpclient Demo 案例 含jar”中,我们将深入探讨如何使用HttpClient来处理POST请求时传递参数的字符原样问题,即避免参数被自动处理或转换。 HttpClient 4.5版本是一个稳定且广泛使用的版本,它包含了各种...
2. 使用HttpClient执行请求: ```java CloseableHttpResponse response = httpClient.execute(httpGet); ``` 3. 处理响应: ```java HttpEntity entity = response.getEntity(); if (entity != null) { // 读取响应...
下面我们将详细介绍如何使用HttpClient进行文件上传: 1. **配置HttpClient**: 首先,我们需要创建一个HttpClient实例并进行配置。这包括设置连接超时、重试策略、HTTP连接管理器等。例如,我们可以使用`...