发表于: 2017-11-18 20:27:44

1 720


今天做的事:


今天真的痛苦,快要疯了。。。


尝试使用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的文件上传好难啊!!!


收获:感觉毫无收获,唯一的收获就是心态崩了。。。


我就一定要刚出来!




返回列表 返回列表
评论

    分享到