`
godsend_jin
  • 浏览: 41844 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

httpclient通过附件形式传递,客户端和服务端实现方法

阅读更多

1、客户端发送实现

 

package url;

import io.IoStreamUtil;

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

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;

/**
 * httpclient上传文件
 * @author linwei
 *
 */
public class MultipartEntityUtil {

 public static String postFile(File file,String url) throws ClientProtocolException, IOException {

  FileBody bin = null;
  HttpClient httpclient = new DefaultHttpClient();
  HttpPost httppost = new HttpPost(url);
  if(file != null) {
   bin = new FileBody(file);
  }

  StringBody username = new StringBody("13696900475");
  StringBody password = new StringBody("13696900475");
//请记住,这边传递汉字会出现乱码,解决方法如下,设置好编码格式就好
                //new StringBody("汉字",Charset.forName("UTF-8"))); 
  
     MultipartEntity reqEntity = new MultipartEntity();
     reqEntity.addPart("username", username);
     reqEntity.addPart("password", password);
     reqEntity.addPart("data", bin);
    
     httppost.setEntity(reqEntity);
     System.out.println("执行: " + httppost.getRequestLine());
    
     HttpResponse response = httpclient.execute(httppost);
     System.out.println("statusCode is " + response.getStatusLine().getStatusCode());
     HttpEntity resEntity = response.getEntity();
     System.out.println("----------------------------------------");
     System.out.println(response.getStatusLine());
     if (resEntity != null) {
       System.out.println("返回长度: " + resEntity.getContentLength());
       System.out.println("返回类型: " + resEntity.getContentType());
       InputStream in = resEntity.getContent();
       System.out.println("in is " + in);
       System.out.println(IoStreamUtil.getStringFromInputStream(in));
     }
     if (resEntity != null) {
       resEntity.consumeContent();
     }
  return null;
 }
 
 public static void main(String[] args) throws ClientProtocolException, IOException {
 
  File file = new File("d:/rss.xml");
  String url = "http://localhost:8080/webtest/servlet/URLTest";
  postFile(file,url);
 }
 
}

 

2、服务端接收实现

 

//commons-fileupload.jar  commons-io
request.setCharacterEncoding("UTF-8");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
          FileItemFactory factory = new DiskFileItemFactory(); 
            ServletFileUpload upload = new ServletFileUpload(factory); 
            try {  
                List items = upload.parseRequest(request); 
                Iterator iter = items.iterator(); 
                while (iter.hasNext()) { 
                    FileItem item = (FileItem) iter.next(); 
                    if (item.isFormField()) { 
                        //普通文本信息处理 
                        String paramName = item.getFieldName(); 
                        String paramValue = item.getString(); 
                        System.out.println(paramName + ":" + paramValue); 
                    } else { 
                        //上传文件信息处理 
                        String fileName = item.getName(); 
                        byte[] data = item.get(); 
                        String filePath = "d:/ssssss.txt"; 
                        FileOutputStream fos = new FileOutputStream(filePath); 
                        fos.write(data); 
                        fos.close(); 
                    } 
                }  
            } catch (FileUploadException e) { 
                e.printStackTrace(); 
            } 
        } 
 

分享到:
评论

相关推荐

    C#中客户端通过http协议访问服务端

    描述“客户端计算1+1 传递给服务器 通过服务器运算 把2返回给客户端”表明我们需要实现一个更具体的业务逻辑:客户端发送计算请求(1+1),服务端执行计算,然后将结果(2)返回给客户端。为了实现这个功能,服务端...

    Mikin客户端与服务端通讯.rar

    Mikin客户端与服务端通讯C#源码的资源,提供了一个很好的学习和实践平台,帮助我们深入理解C#语言在实现客户端与服务端交互中的应用。 首先,我们要了解客户端-服务端模型的基本概念。在这个模型中,客户端是用户...

    Java版-客户端与服务端

    在IT行业中,Java是一种广泛应用的编程语言,尤其在构建客户端和服务端应用程序方面有着显著的优势。本文将深入探讨Java在客户端与服务端交互中的关键知识点,帮助开发者理解和掌握相关技术。 首先,我们要理解...

    webScoket客户端和服务端,实现交互,可直接运行

    3. **接收消息**:客户端同样使用`ReceiveAsync`方法异步接收来自服务端的数据,并根据需要解码和处理。 4. **交互界面**:客户端可能需要一个用户界面,让用户输入消息并展示接收到的消息。这可以使用Windows Forms...

    安卓客户端与服务端交互源代码(包括安卓端和web端)

    这个主题涉及到了客户端(Android应用)如何通过网络通信与服务端(通常为Web服务器)进行数据交换,以实现功能如用户登录、数据同步、远程API调用等。以下是对这个主题的详细阐述: 首先,我们需要理解的是Android...

    java实现httpclient服务端客户端代码例子

    java实现http接口服务端、客户端代码例子。使用jar(commons-codec-1.3.jar、commons-httpclient-3.0.1.jar、commons-logging-1.1.1.jar)

    两个系统之间发送文件客户端和服务端

    在IT行业中,系统之间的文件传输是一项常见的任务,特别是在分布式系统和网络应用中。在这个场景下,客户端和...通过分析和实现这样的例子,开发者可以深入理解网络通信的基本原理,提高在实际项目中的问题解决能力。

    android文件上传(客户端+服务端)

    本教程将详细讲解如何实现Android客户端的文件上传,以及服务端接收文件的过程,主要涉及的技术包括HttpClinet和异步http框架AsyncHttpClient。 首先,我们来看Android客户端的文件上传。传统的HTTP请求库...

    安卓开发客户端和服务端的通信入门代码(亲测可用)

    当服务器端能够正确的在Apache上部署和运行以后 再通过安卓客户端代码访问 则可以正确通信了 PS: 代码里的服务器地址 要换成本地跑的服务器地址才可以 一般为127 0 0 1 ">首先这个代码也是从别人那里下载的 但刚...

    使用jboss netty 创建高性能webservice客户端及服务端

    通过上述步骤,我们就可以利用JBoss Netty构建出高性能的Web Service客户端和服务端。不过,这只是基础,深入研究Netty源码可以帮助我们更好地理解和优化系统性能,例如了解其内部的事件调度机制、缓冲区管理以及...

    https客户端、服务端代码样例

    这篇博客"HTTPS客户端、服务端代码样例"提供了一些关于如何实现HTTPS通信的示例代码,对于理解和应用HTTPS技术非常有帮助。 首先,我们需要了解HTTPS的基础架构。HTTPS在客户端(浏览器)和服务器端之间建立一个...

    Android多文件上传客户端和服务端

    本项目涉及的是客户端和服务端两部分,确保用户能够从Android设备上传多个文件到服务器,并在服务端进行处理和存储。以下是关于Android多文件上传的详细知识点: 1. **Android客户端开发**: - **...

    C# SOCKET网络通信程序(客户端+服务端).zip

    本项目"**C# SOCKET网络通信程序(客户端+服务端)**"旨在提供一个易于理解和使用的示例,帮助开发者进行协议调试。 首先,我们来理解什么是SOCKET。SOCKET是操作系统提供的一个接口,允许应用程序通过它与其他计算机...

    乐鑫Esp32学习之旅⑧ esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。

    乐鑫Esp32学习esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。博文:https://blog.csdn.net/xh870189248/article/details/80737111

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    httpclient 客户端发送xml报文到服务器端采用post方式(加密)传递

    本示例探讨的是如何使用HTTPClient库在客户端发送XML报文到服务器端,且报文通过POST方法传递,并可能涉及加密处理,确保数据的安全性。 首先,HTTPClient是Apache提供的一款强大的Java HTTP客户端API,它允许...

    使用HTTP实现断点续传功能包括客户端、服务端代码.zip

    在这个压缩包文件"使用HTTP实现断点续传功能包括客户端、服务端代码.zip"中,我们预计会找到一个C#编写的客户端和服务器端的代码示例。 首先,我们要理解HTTP协议中的Range请求头。在HTTP 1.1中,客户端可以通过...

    C# 一个简单的 Restful 服务端和 Restful 客户端 Demo

    这个C#的RESTful服务端和客户端Demo,旨在帮助开发者快速理解和实践RESTful API的设计和实现,是学习和开发相关应用的良好起点。通过实际操作和修改这个Demo,你可以更深入地了解RESTful架构的精髓以及C#在Web服务...

    文件上传源码 客户端服务端

    在这个场景下,"文件上传源码 客户端服务端" 提供了实现这一功能的代码示例,包括客户端和服务端两部分,使用的技术有Socket和HTTPClient。 首先,让我们详细探讨客户端部分。在"FileUploadExample"中,客户端通常...

Global site tag (gtag.js) - Google Analytics