httpclientpost上传
Ⅰ 如何使用POST上传的二进制数据
这个不就是文件上传嘛
给你个servlet3.0的文件上传
页面表单
<form action="sf" enctype="multipart/form-data" method="get">
username: <input type="text" name="username" /><br>
file: <input type="file" name="filename" /><br>
<input type="submit" value="Submit" />
</form>
servlet头注解配置
@WebServlet("/sf")
@MultipartConfig
public class SingleFileUpload extends HttpServlet {
doPost 方法
java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Enumeration<String> heads = request.getHeaderNames();
System.out.println("request.getHeaderNames()");
while (heads.hasMoreElements()) {
String header = heads.nextElement();
System.out.println(header + "=" + request.getHeader(header));
}
Part part = request.getPart("filename");
Collection<String> headerNames = part.getHeaderNames();
System.out.println("part.getHeaderNames()");
for (String header : headerNames) {
System.out.println(header + "=" + part.getHeader(header));
}
InputStream is = part.getInputStream();
String filename = new String(getFilename(part).getBytes(), "UTF-8");
File file = new File("D:\\fileupload");
if (!file.exists() || !file.isDirectory()) {
file.mkdir();
}
FileOutputStream fos = new FileOutputStream(new File(file + File.separator + filename));
byte[] buf = new byte[1024];
while (is.read(buf) != -1) {
fos.write(buf);
}
fos.flush();
fos.close();
is.close();
PrintWriter out = response.getWriter();
out.println("file upload success");
}
public String getFilename(Part part) {
String contentDispositionHeader = part.getHeader("content-disposition");
String[] elements = contentDispositionHeader.split(";");
for (String element : elements) {
if (element.trim().startsWith("filename")) {
return element.substring(element.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}
Ⅱ httpclient发送post请求访问需要有用户名和密码的登录界面
1.服务器认证(Server Authentication)
HttpClient处理服务器认证几乎是透明的,仅需要开发人员提供登录信息(login credentials)。登录信息保存在HttpState类的实例中,可以通过 setCredentials(String realm, Credentials cred)和getCredentials(String realm)来获取或设置。
HttpClient内建的自动认证,可以通过HttpMethod类的setDoAuthentication(boolean doAuthentication)方法关闭,而且这次关闭只影响HttpMethod当前的实例。
2.代理认证(proxy authentication)
除了登录信息需单独存放以外,代理认证与服务器认证几乎一致。用 setProxyCredentials(String realm, Credentials cred)和 getProxyCredentials(String realm)设、取登录信息。
3.认证方案(authentication schemes)
是HTTP中规定最早的也是最兼容的方案,遗憾的是也是最不安全的一个方案,因为它以明码传送用户名和密码。它要求一个UsernamePasswordCredentials实例,可以指定服务器端的访问空间或采用默认的登录信息。
Ⅲ httpclient4 提交post
首先,您应该清楚目标网页的具体提交规格,是否跟您提交的数据项一致,然后才能采用httpclient4进行数据模拟。比如某些网站会加入一些额外的数值进入浏览器,如果参数不匹配,则默认为“网络蜘蛛“,而阻止访问。
个人推荐您使用firebug或httpwatch之类工具,先自己亲自登陆该网站完成一次具体操作,然后截取实际提交的结果,进行分析比对,才能完成httpclient4的数据提交与读取(说白了,您应该完整的走一次标准流程,然后把标准流程提交的数据全部用httpclient4模拟下来)。
举个最简单的例子,如果网站的数据接受方式是get(对应HttpGet),而您偏偏用HttpPost提交数据,那么能正常获得结果才怪。另外,某些网站也会对浏览器类型,传递的Header数据,首次读取页面时产生的Session值等等方面有验证,这些都是需要具体分析的地方,如果数据不匹配,一样无法正常浏览。
Ⅳ 关于asynchttpclient框架的post 提交表单上传文件怎么弄
1.添加权限(访问网络权限和读写权限)
2.获取上传文件路径并判断是否为空
3.若不为空,创建异步请求对象
4.创建上传文件路径
5.执行post请求(指定url路径,封装上传参数,新建AsyncHttpResponseHandler方法)
Ⅳ C#怎么使用HttpClient来Post数据
HttpClient是对http异步请求的封装。
我的这句话你要理解两个信息,一个是http请求(支持http1.1和http1.2),另一个是异步,它有自身的好处。
httpClient支持很多verb的,例如GET/POST等等,但其方法上对部分的verb进行了单独的成员方法封装,比如GETAsync()方法就是上传GET,而PostAsync()方法就是上传Post,类似的还有Delete/Put都是异步封装。但事实上有时我们还需要其他的动词请求时,可以考虑使用SendAsync()成员方法,这个方法中封装了一个HttpRequestMessage对象,请求前需要构造这个对象,而这个对象中有一个Method的属性可以支持Get/Put/Post/Delete/Options/Tract/Headrt等常规的动作之外,还可以构造一个自定义的动作。
而在具体的使用上来说,POST时可以查看PostAsync的重载方法,要知道这个的一个异步的方法以返回时结果其实是异步的HttpResponseMessage,也就是所谓的Task<HttpResponseMessage>,接收到的对象的Result属性就是HttpResponseMessage对象。而这个对象中的StatusCode可以帮你确定状态码(如200等),而Content你应该知道是什么东西了,其实就是返回的内容,其实是对应编码解析后的文本内容。
当然,如果你需要的是流的话,目前除GetStreamAsync之外还没有其他的办法,只能使用HttpWebRequest去处理了,毕竟HttpClient是针对http请求的一个轻量级框架,并没有完成所有的http请求的情况的!
比如你的业务是POST上一个值,返回一个文件,可以考虑使用Get上传一个指定的参数(处理到Uri中)使用GetStreamAsync方法,返回的是一个Task<Stream>,如果处理的数据较为复杂,或是Post上传的参数过大(如上传一个4M以上的文件,返回一个4M以上的文件流时)此时需要考虑使用HttpWebRequest类进行处理,GET上传数据不能大于4M。
便基本上的httpClient功能是够用的。
Ⅵ Android中使用HttpPost实现数据与文件同时上传的功能
第一步:编写一个Servlet,把接收到的HTTP信息保存在一个文件中,代码如下:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取输入流,是HTTP协议中的实体内容
ServletInputStream sis=request.getInputStream();
//缓冲区
byte buffer[]=new byte[1024];
FileOutputStream fos=new FileOutputStream("d://file.log");
int len=sis.read(buffer, 0, 1024);
//把流里的信息循环读入到file.log文件中
while( len!=-1 )
{
fos.write(buffer, 0, len);
len=sis.readLine(buffer, 0, 1024);
}
fos.close();
sis.close();
}
第二步:实现如下图1的的表单页面,生成一个注册表单,提交到Servlet中
详细的代码如下:
<form action="servlet/ReceiveFile" method="post" enctype="multipart/form-data">
第一个参数<input type="text" name="name1"/> <br/>
第二个参数<input type="text" name="name2"/> <br/>
第一个上传的文件<input type="file" name="file1"/> <br/>
第二个上传的文件<input type="file" name="file2"/> <br/>
<input type="submit" value="提交">
</form>
注意了,由于要上传附件,所以一定要设置enctype为multipart/form-data,才可以实现附件的上传。
第三步:填写完信息后按“提交”按钮后,在D盘下查找file.log文件用记事本打开,数据如下:
-----------------------------7d92221b604bc
Content-Disposition: form-data; name="name1"
hello
-----------------------------7d92221b604bc
Content-Disposition: form-data; name="name2"
world
-----------------------------7d92221b604bc
Content-Disposition: form-data; name="file1"; filename="C:/2.GIF"
Content-Type: image/gif
GIF89a
Ⅶ HttpClient使用HttpPost进行语音文件上传,但是报java.lang.IllegalArgumentException如图
这个异常是指方法参数不符合,比如一般来说,写成jar包的某个方法里面有一个随机函数,最大允许输入100,结果你输入101,他经过判断不符合,于是就抛出异常,你仔细检查你调用其他方法的过程中放入的参数是否有误
Ⅷ java 怎么根据httpPost 和httpClient 等,传图片到服务器!
使用Apache提供的HttpClient组件可以实现。其实传图片就是用POST方式向服务器发送数据。
Ⅸ Android 如何用HttpClient 以Post方式提交数据并添加http头信息
简单的说
get 请求没有 请求体,他的头 可以携带参数(数据)发送给服务器
post 请求 有 头,有体,但是他的头不可以携带数据,数据只能放到 体里面
大数据使用 post 请求,小数据传输 可以使用 get请求
get 请求使用 不安全,携带的数据容易被人截取,所以 一般都使用 post请求
Ⅹ javaEE 如何将ID post上传
用httpclient这个jar包
/**
*连接超时
*/
_TIME_OUT=1000*30;
/**
*响应超时
*/
publicstaticfinalintSO_TIMEOUT=1000*30;
/**
*发一起个Post请求,简单的Text方式
*@paramurl 请求URL
*@paramparameters 请求参数
*@paramencoding 字符编码
*@return
*@throwsException
*/
publicstaticStringpost(Stringurl,List<NameValuePair>parameters,Stringencoding)throwsException{
BasicHttpParamshttpParameters=newBasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,CONNECTION_TIME_OUT);
HttpConnectionParams.setSoTimeout(httpParameters,SO_TIMEOUT);
HttpClienthttpClient=newDefaultHttpClient(httpParameters);
HttpPostpost=newHttpPost(url);
HttpResponseresponse;
try{
UrlEncodedFormEntityencode=newUrlEncodedFormEntity(parameters,encoding);
post.setEntity(encode);
response=httpClient.execute(post);
returnEntityUtils.toString(response.getEntity());
}catch(Exceptione){
throwe;
}
}