博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpClient如何解决302重定向问题
阅读量:5173 次
发布时间:2019-06-13

本文共 2689 字,大约阅读时间需要 8 分钟。

最近的接口测试,发现接口地址报302错误,通过上网搜索,发现问题所在,解决办法是需要请求重定向后的URI。

package com.btv;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;/**  * @author QiaoJiafei  * @version 创建时间:2016年1月5日 上午10:17:46  * 类说明  */public class TestLogin {    public static void main(String args[]) {        try {            HttpClient client = HttpClients.createDefault();            login(client);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }        public static void login( HttpClient client) throws Exception{            final String APPLICATION_JSON = "application/json";          final String CONTENT_TYPE_TEXT_JSON = "text/json";                            String url = "http://172.16.30.208:8092/svc/login";            String js = "{\"username\":\"13800000002\",\"password\":\"123456\"}";                  HttpPost httpPost = new HttpPost(url);               httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");                StringEntity se = new StringEntity(js);        se.setContentType(CONTENT_TYPE_TEXT_JSON);        httpPost.setEntity(se);                HttpResponse response = null;                response = client.execute(httpPost);        //----------判断是否重定向开始        int code = response.getStatusLine().getStatusCode();        String newuri="";        if (code == 302) {            Header header = response.getFirstHeader("location"); // 跳转的目标地址是在 HTTP-HEAD 中的            newuri = header.getValue(); // 这就是跳转后的地址,再向这个地址发出新申请,以便得到跳转后的信息是啥。            System.out.println(newuri);            System.out.println(code);                        httpPost = new HttpPost(newuri);            httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");                         se = new StringEntity(js);            se.setContentType(CONTENT_TYPE_TEXT_JSON);            httpPost.setEntity(se);            response = client.execute(httpPost);            code = response.getStatusLine().getStatusCode();            System.out.println("login"+code);        }        //------------重定向结束        HttpEntity entity = null;        entity = response.getEntity();        String s2 = EntityUtils.toString(entity, "UTF-8");        System.out.println(s2);                    }            }

 

转载于:https://www.cnblogs.com/coprince/p/8194598.html

你可能感兴趣的文章
"类" 库添加继承
查看>>
ucos在s3c2410上运行过程整体剖析之基础知识-与UCOS运行有关的ARM9芯片知识--续 ...
查看>>
存储器的寻址问题 分类: 计算机组成原理 2011-...
查看>>
DDRmenu(翻译)
查看>>
atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7
查看>>
Atitit 架构的原则attilax总结
查看>>
ASP.Net之数据绑定
查看>>
Android自动化测试第三季第二讲Toast控件文字获取
查看>>
Google Analytics的能与不能
查看>>
Ubuntu 基本操作
查看>>
JAVA数组的定义及用法
查看>>
18寒假第七测
查看>>
帧中继
查看>>
105:MyBatis常见实用面试题整理
查看>>
Base on QC Automation Framework v1.0
查看>>
bzoj 3261: 最大异或和 (可持久化trie树)
查看>>
UVA 11440 Help Tomisu
查看>>
bzoj千题计划258:bzoj3123: [Sdoi2013]森林
查看>>
开博@纪念
查看>>
linux的正则表达式
查看>>