发表于: 2017-11-18 20:27:44
1 721
今天做的事:
今天真的痛苦,快要疯了。。。
尝试使用http的POST方法上传文件,但是失败了,写了个demo,报400错误,有参数不对,但是有不清楚哪里不对,这是最气的。
微信这块的图片上传,难受。
然后就去找httpClient的demo,这个是封装好的东西,会比java.net的http好用一点,不过文件上传这块还是没有写出一个可以使用的demo,明天继续吧。
只是把httpClient的GET请求和带参数的POST请求实现了,然后POST请求这块还没有完全理解,明天继续,然后把文件上传争取搞通。
不想解释什么了,贴下代码吧。
/**
* 发送一个GET请求
* */
public String sendGet(String url){
//1.获取一个HTTPClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
//2.生成一个GET请求
HttpGet httpGet = new HttpGet(url);
CloseableHttpResponse response = null;
try{
//3.执行get请求并返回结果
response = httpClient.execute(httpGet);
}catch (IOException e){
e.printStackTrace();
}
String result = null;
try{
//4.处理结果,这里将结果返回成字符串
HttpEntity entity = response.getEntity();
if(entity != null){
result = EntityUtils.toString(entity);
}
}catch (IOException e1){
e1.printStackTrace();
}finally {
try{
response.close();
}catch (IOException e2){
e2.printStackTrace();
}
}
return result;
}
get请求这块比较好懂,就是建立新建httpClient,然后生成get请求,执行,处理结果即可。
/**
* 发送带参数的POST请求,参数为map
* */
public String sendPost(String url, Map<String,String> map){
CloseableHttpClient httpClient = HttpClients.createDefault();
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
for(Map.Entry<String,String> entry : map.entrySet()){
//给参数赋值
formParams.add(new BasicNameValuePair(entry.getKey(),entry.getValue()));
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8);
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(entity);
CloseableHttpResponse response = null;
try{
response = httpClient.execute(httpPost);
}catch (IOException e){
e.printStackTrace();
}
HttpEntity entity1 = response.getEntity();
String result = null;
try{
result = EntityUtils.toString(entity1);
}catch (IOException e1){
e1.printStackTrace();
}
return result;
}
POST也不难,就是多了写请求入参的处理而已,不过有几处需要看一下,如下:
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
Map.Entry<String,String> entry : map.entrySet()
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8);
然后就和GET一样了,执行请求,处理返回内容即可。
明天计划:把今天剩下内容看了;把文件上传搞通,再争取把微信图片上传弄了。
问题:http的文件上传好难啊!!!
收获:感觉毫无收获,唯一的收获就是心态崩了。。。
我就一定要刚出来!
评论