如何从Java HttpClient获取重定向URL

问题描述 投票:0回答:1

我正在使用下面显示的来自Apache HttpClient的url执行GET。一切似乎正常,并且按预期将我重定向到url。但是,当我在浏览器中输入要使用的网址时,浏览器在重定向中显示了不同的网址,并显示了302响应,而不是我通过编程获取的200响应。如何从浏览器获取的HttpClient中获取实际的参数化url。

我正在使用此版本的Apache HttpClient:

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.6</version>
    </dependency>

这是我正在使用的网址:

https://launch.smarthealthit.org/v/r4/auth/authorize?response_type=code&client_id=mock-launch-client-id&scope=launch+patient%2F*.read&redirect_uri=http%3A%2F%2Fwww.google.com&aud=https%3A%2F%2Flaunch.smarthealthit.org%2Fv%2Fr4%2Ffhir&launch=foobar

完成请求后,浏览器会在网址栏中显示类似的内容:

https://www.google.com/?code=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24ifSwiY2xpZW50X2lkIjoibW9jay1sYXVuY2gtY2xpZW50LWlkIiwic2NvcGUiOiJsYXVuY2ggcGF0aWVudC8qLnJlYWQiLCJpYXQiOjE1ODkxMTkwNjQsImV4cCI6MTU4OTExOTM2NH0.hH8Dh-q6ZQ6CdA2ro3oMlAhMBko9YxDahbwjkXu8Bh0

enter image description here

这是完整的代码和输出:

代码

package com.mycompany.myproject.integration.misc;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLDecoder;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.StringTokenizer;

import javax.net.ssl.SSLContext;
import javax.net.ssl.X509TrustManager;

import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContexts;
import org.apache.http.impl.client.HttpClients;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SmartHealthItIntegrationTest {

    private static final Logger logger = LoggerFactory.getLogger(SmartHealthItIntegrationTest.class);

    @Test
    public void shouldGetResponse() {
        logger.info("Starting test...");
        String url = "https://launch.smarthealthit.org/v/r4/auth/authorize?response_type=code&client_id=mock-launch-client-id&scope=launch+patient%2F*.read&redirect_uri=http%3A%2F%2Fwww.google.com&aud=https%3A%2F%2Flaunch.smarthealthit.org%2Fv%2Fr4%2Ffhir&launch=foobar";
        // create the request
        HttpGet request = new HttpGet(url);
        // set the headers
        addHeader(request, "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
        logger.info("Sending request to: \n" + url + "\n" + prettyPrintEncodedUrl(url));
        // send the request
        String response = doGet(request);
        // get the response
        logger.info("Got response:\n" + response);
        logger.info("Done.");
    }

    private void addHeader(HttpRequest request, String key, String value) {
        request.addHeader(key, value);
    }

    public String doGet(HttpGet request) {
        try {
            HttpClient client = createClient();
            HttpResponse response = client.execute(request);
            logger.info("Got response.");
            int statusCode = response.getStatusLine().getStatusCode();
            logger.info("STATUS: " + statusCode);
            String responseBody = getResponse(response);
            return responseBody;
        } catch (Exception exp) {
            throw new RuntimeException(exp);
        }
    }

    public String getResponse(HttpResponse response) {
        InputStream responseInputStream = null;
        try {
            responseInputStream = response.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(responseInputStream));
            StringBuffer sb = new StringBuffer();
            String line = "";
            while ((line = reader.readLine()) != null) {
                sb.append(line);
                sb.append("\n");
            }
            return sb.toString();
        } catch (Exception exp) {
            throw new RuntimeException(exp);
        } finally {
            try {
                if (responseInputStream != null) {
                    responseInputStream.close();
                }
            } catch (Exception exp) {
                throw new RuntimeException(exp);
            }
        }
    }

    public static String prettyPrintEncodedUrl(String url) {
        if (url.indexOf("?") == 0) {
            return url;
        } else {
            String location = url.substring(0, url.indexOf("?") + 1);
            String queryString = url.substring(url.indexOf("?") + 1, url.length());
            String rtn = "";
            rtn += "\t" + location + "\n";
            StringTokenizer tokenizer = new StringTokenizer(queryString, "&");
            ArrayList<String> params = new ArrayList<String>();
            while (tokenizer.hasMoreTokens()) {
                params.add(tokenizer.nextToken());
            }
            for (int i = 0; i < params.size(); i++) {
                String param = params.get(i);
                String[] keyValue = param.split("=");
                String key = keyValue[0];
                String value = URLDecoder.decode(keyValue[1]);
                rtn += "\t\t" + key + "=" + value;
                if (i < params.size() - 1) {
                    rtn += "&\n";
                }
            }
            return rtn;
        }
    }

    private HttpClient createClient() {
        try {
            SSLContext sslcontext = SSLContexts.custom().useSSL().build();
            sslcontext.init(null, getTrustManager(), new SecureRandom());
            SSLConnectionSocketFactory factory = new SSLConnectionSocketFactory(sslcontext, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
            HttpClient client = HttpClients.custom().setSSLSocketFactory(factory).build();
            return client;
        } catch (Exception exp) {
            throw new RuntimeException(exp);
        }
    }

    private X509TrustManager[] getTrustManager() {
        return new X509TrustManager[] { new HttpsTrustManager() };
    }

    private class HttpsTrustManager implements X509TrustManager {

        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
        }

        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
        }

        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }

    }

}

输出

2020-05-10 09:48:28,249 09:48:28.249 [main] INFO  (SmartHealthItIntegrationTest.java:33) - Starting test...
2020-05-10 09:48:28,261 09:48:28.261 [main] INFO  (SmartHealthItIntegrationTest.java:39) - Sending request to: 
https://launch.smarthealthit.org/v/r4/auth/authorize?response_type=code&client_id=mock-launch-client-id&scope=launch+patient%2F*.read&redirect_uri=http%3A%2F%2Fwww.google.com&aud=https%3A%2F%2Flaunch.smarthealthit.org%2Fv%2Fr4%2Ffhir&launch=foobar
    https://launch.smarthealthit.org/v/r4/auth/authorize?
        response_type=code&
        client_id=mock-launch-client-id&
        scope=launch patient/*.read&
        redirect_uri=http://www.google.com&
        aud=https://launch.smarthealthit.org/v/r4/fhir&
        launch=foobar
2020-05-10 09:48:35,573 09:48:35.573 [main] INFO  (SmartHealthItIntegrationTest.java:55) - Got response.
2020-05-10 09:48:35,573 09:48:35.573 [main] INFO  (SmartHealthItIntegrationTest.java:57) - STATUS: 200
2020-05-10 09:48:35,647 09:48:35.647 [main] INFO  (SmartHealthItIntegrationTest.java:43) - Got response:
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for." name="description"><meta content="noodp" name="robots"><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/logos/doodles/2020/mothers-day-2020-may-10-6753651837108382.4-l.png" itemprop="image"><meta content="Happy Mother's Day! Craft and send art from your heart in today's Google Doodle!" property="twitter:title"><meta content="Happy Mother's Day 2020! #GoogleDoodle" property="twitter:description"><meta content="Happy Mother's Day 2020! #GoogleDoodle" property="og:description"><meta content="summary_large_image" property="twitter:card"><meta content="@GoogleDoodles" property="twitter:site"><meta content="https://www.google.com/logos/doodles/2020/mothers-day-2020-may-10-6753651837108382.5-2xa.gif" property="twitter:image"><meta content="https://www.google.com/logos/doodles/2020/mothers-day-2020-may-10-6753651837108382.5-2xa.gif" property="og:image"><meta content="1000" property="og:image:width"><meta content="400" property="og:image:height"><meta content="https://www.google.com/logos/doodles/2020/mothers-day-2020-may-10-6753651837108382.5-2xa.gif" property="og:url"><meta content="video.other" property="og:type"><title>Google</title><script nonce="yOujefy1z3mcc7vAfFRTGg==">(function(){window.google={kEI:'Mwa4Xsu4O46rtQa2h6f4Bw',kEXPI:'0,202123,3,4,1151617,5662,731,223,5104,207,3204,10,1051,175,364,925,574,576,241,383,246,5,1354,196,176,441,174,51,113,543,1218,406,559,17,125,1123747,1197732,417,78,329040,1294,12383,4855,32692,15247,867,17444,11240,9188,8384,4859,1361,9291,3023,2820,1924,3123,7910,1808,4020,978,4788,1,3142,5297,2054,920,873,1217,2975,6430,1142,6290,3874,3221,4517,2778,520,399,2277,8,85,2711,885,708,1167,112,390,1822,530,149,1103,840,517,1142,277,47,56,158,4100,109,203,1135,1,3,2669,1839,185,1776,143,377,1947,729,301,1,1188,103,328,1284,16,2927,2247,473,1339,29,719,1039,3227,773,2072,7,5599,8547,2663,641,2040,1,408,2459,1226,1462,3934,1275,108,1456,258,1693,908,2,941,552,6,2056,2132,265,2896,2074,449,225,996,1670,1086,251,666,432,3,12,1534,865,1,371,1639,1907,707,148,189,2837,475,503,1,725,1260,28,130,1,2093,1991,464,143,1344,130,1018,643,4,1528,17,416,1,127,73,2,1,3,2,2,298,352,1010,171,1,287,568,209,271,85,513,276,395,2,8,12,30,210,535,472,205,10,389,434,1658,185,146,503,40,242,56,134,783,155,609,22,169,234,148,131,205,585,117,721,41,50,165,43,826,4,434,36,212,138,362,640,1820,364,42,114,359,228,170,158,200,682,248,15,11,138,605,24,35,25,40,3,134,82,68,238,333,331,171,484,529,471,462,49,2,757,1242,4,8,5814949,3309,1802584,6996022,549,333,444,1,2,80,1,900,896,1,8,1,2,2551,1,748,141,59,742,557,1,4265,1,1,1,1,137,1,1193,1401,3,461,68,7,5,8,4,54,7,4,82,8,1,1,14,5,20,2,11,5,9,5,5,4,1,2,1,1,1,1,3,1,1,1,1,1,1,15,1,6,6,3,1,1,1,5,2,1,6,2,23962143',kBL:'bfF3'};google.sn='webhp';google.kHL='en';})();(function(){google.lc=[];google.li=0;google.getEI=function(a){for(var c;a&&(!a.getAttribute||!(c=a.getAttribute("eid")));)a=a.parentNode;return c||google.kEI};google.getLEI=function(a){for(var c=null;a&&(!a.getAttribute||!(c=a.getAttribute("leid")));)a=a.parentNode;return c};google.ml=function(){return null};google.time=function(){return Date.now()};google.log=function(a,c,b,d,g){if(b=google.logUrl(a,c,b,d,g)){a=new Image;var e=google.lc,f=google.li;e[f]=a;a.onerror=a.onload=a.onabort=function(){delete e[f]};google.vel&&google.vel.lu&&google.vel.lu(b);a.src=b;google.li=f+1}};google.logUrl=function(a,c,b,d,g){var e="",f=google.ls||"";b||-1!=c.search("&ei=")||(e="&ei="+google.getEI(d),-1==c.search("&lei=")&&(d=google.getLEI(d))&&(e+="&lei="+d));d="";!b&&google.cshid&&-1==c.search("&cshid=")&&"slh"!=a&&(d="&cshid="+google.cshid);b=b||"/"+(g||"gen_204")+"?atyp=i&ct="+a+"&cad="+c+e+f+"&zx="+google.time()+d;/^http:/i.test(b)&&"https:"==window.location.protocol&&(google.ml(Error("a"),!1,{src:b,glmm:1}),b="");return b};}).call(this);(function(){google.y={};google.x=function(a,b){if(a)var c=a.id;else{do c=Math.random();while(google.y[c])}google.y[c]=[a,b];return!1};google.lm=[];google.plm=function(a){google.lm.push.apply(google.lm,a)};google.lq=[];google.load=function(a,b,c){google.lq.push([[a],b,c])};google.loadAll=function(a,b){google.lq.push([a,b])};}).call(this);google.f={};(function(){
document.documentElement.addEventListener("submit",function(b){var a;if(a=b.target){var c=a.getAttribute("data-submitfalse");a="1"==c||"q"==c&&!a.elements.q.value?!0:!1}else a=!1;a&&(b.preventDefault(),b.stopPropagation())},!0);document.documentElement.addEventListener("click",function(b){var a;a:{for(a=b.target;a&&a!=document.documentElement;a=a.parentElement)if("A"==a.tagName){a="1"==a.getAttribute("data-nohref");break a}a=!1}a&&b.preventDefault()},!0);}).call(this);
var a=window.location,b=a.href.indexOf("#");if(0<=b){var c=a.href.substring(b+1);/(^|&)q=/.test(c)&&-1==c.indexOf("#")&&a.replace("/search?"+c.replace(/(^|&)fp=[^&]*/g,"")+"&cad=h")};</script><style>#gbar,#guser{font-size:13px;padding-top:1px !important;}#gbar{height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}@media all{.gb1{height:22px;margin-right:.5em;vertical-align:top}#gbar{float:left}}a.gb1,a.gb4{text-decoration:underline !important}a.gb1,a.gb4{color:#00c !important}.gbi .gb4{color:#dd8e27 !important}.gbf .gb4{color:#900 !important}
</style><style>body,td,a,p,.h{font-family:arial,sans-serif}body{margin:0;overflow-y:scroll}#gog{padding:3px 8px 0}td{line-height:.8em}.gac_m td{line-height:17px}form{margin-bottom:20px}.h{color:#36c}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}em{font-weight:bold;font-style:normal}.lst{height:25px;width:496px}.gsfi,.lst{font:18px arial,sans-serif}.gsfs{font:17px arial,sans-serif}.ds{display:inline-box;display:inline-block;margin:3px 0 4px;margin-left:4px}input{font-family:inherit}body{background:#fff;color:#000}a{color:#11c;text-decoration:none}a:hover,a:active{text-decoration:underline}.fl a{color:#36c}a:visited{color:#551a8b}.sblc{padding-top:5px}.sblc a{display:block;margin:2px 0;margin-left:13px;font-size:11px}.lsbb{background:#eee;border:solid 1px;border-color:#ccc #999 #999 #ccc;height:30px}.lsbb{display:block}.ftl,#fll a{display:inline-block;margin:0 12px}.lsb{background:url(/images/nav_logo229.png) 0 -261px repeat-x;border:none;color:#000;cursor:pointer;height:30px;margin:0;outline:0;font:15px arial,sans-serif;vertical-align:top}.lsb:active{background:#ccc}.lst:focus{outline:none}</style><script nonce="yOujefy1z3mcc7vAfFRTGg=="></script></head><body bgcolor="#fff"><script nonce="yOujefy1z3mcc7vAfFRTGg==">(function(){var src='/images/nav_logo229.png';var iesg=false;document.body.onload = function(){window.n && window.n();if (document.images){new Image().src=src;}
if (!iesg){document.f&&document.f.q.focus();document.gbqf&&document.gbqf.q.focus();}
}
})();</script><div id="mngb"> <div id=gbar><nobr><b class=gb1>Search</b> <a class=gb1 href="http://www.google.com/imghp?hl=en&tab=wi">Images</a> <a class=gb1 href="http://maps.google.com/maps?hl=en&tab=wl">Maps</a> <a class=gb1 href="https://play.google.com/?hl=en&tab=w8">Play</a> <a class=gb1 href="http://www.youtube.com/?gl=US&tab=w1">YouTube</a> <a class=gb1 href="http://news.google.com/nwshp?hl=en&tab=wn">News</a> <a class=gb1 href="https://mail.google.com/mail/?tab=wm">Gmail</a> <a class=gb1 href="https://drive.google.com/?tab=wo">Drive</a> <a class=gb1 style="text-decoration:none" href="https://www.google.com/intl/en/about/products?tab=wh"><u>More</u> &raquo;</a></nobr></div><div id=guser width=100%><nobr><span id=gbn class=gbi></span><span id=gbf class=gbf></span><span id=gbe></span><a href="http://www.google.com/history/optout?hl=en" class=gb4>Web History</a> | <a  href="/preferences?hl=en" class=gb4>Settings</a> | <a target=_top id=gb_70 href="https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=http://www.google.com/%3Fcode%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7Im5lZWRfcGF0aWVudF9iYW5uZXIiOnRydWUsInNtYXJ0X3N0eWxlX3VybCI6Imh0dHBzOi8vbGF1bmNoLnNtYXJ0aGVhbHRoaXQub3JnL3NtYXJ0LXN0eWxlLmpzb24ifSwiY2xpZW50X2lkIjoibW9jay1sYXVuY2gtY2xpZW50LWlkIiwic2NvcGUiOiJsYXVuY2ggcGF0aWVudC8qLnJlYWQiLCJpYXQiOjE1ODkxMTg1MTUsImV4cCI6MTU4OTExODgxNX0.mUjN6Mn5usQqW4furt787xF3oaYnim4L-yqU24gD7Zw" class=gb4>Sign in</a></nobr></div><div class=gbh style=left:0></div><div class=gbh style=right:0></div> </div><center><br clear="all" id="lgpd"><div id="lga"><a href="/search?ie=UTF-8&amp;q=Mother%27s+Day&amp;oi=ddle&amp;ct=144866277&amp;hl=en&amp;sa=X&amp;ved=0ahUKEwiLnprlt6npAhWOVc0KHbbDCX8QPQgD"><img alt="Happy Mother's Day! Craft and send art from your heart in today's Google Doodle!" border="0" height="200" src="/logos/doodles/2020/mothers-day-2020-may-10-6753651837108382.4-l.png" title="Happy Mother's Day! Craft and send art from your heart in today's Google Doodle!" width="500" id="hplogo"><br></a><br></div><form action="/search" name="f"><table cellpadding="0" cellspacing="0"><tr valign="top"><td width="25%">&nbsp;</td><td align="center" nowrap=""><input name="ie" value="ISO-8859-1" type="hidden"><input value="en" name="hl" type="hidden"><input name="source" type="hidden" value="hp"><input name="biw" type="hidden"><input name="bih" type="hidden"><div class="ds" style="height:32px;margin:4px 0"><input class="lst" style="margin:0;padding:5px 8px 0 6px;vertical-align:top;color:#000" autocomplete="off" value="" title="Google Search" maxlength="2048" name="q" size="57"></div><br style="line-height:0"><span class="ds"><span class="lsbb"><input class="lsb" value="Google Search" name="btnG" type="submit"></span></span><span class="ds"><span class="lsbb"><input class="lsb" id="tsuid1" value="I'm Feeling Lucky" name="btnI" type="submit"><script nonce="yOujefy1z3mcc7vAfFRTGg==">(function(){var id='tsuid1';document.getElementById(id).onclick = function(){if (this.form.q.value){this.checked = 1;if (this.form.iflsig)this.form.iflsig.disabled = false;}
else top.location='/doodles/';};})();</script><input value="AINFCbYAAAAAXrgUQwsivgKIVHFfDq6qNg2eIHOUQWKu" name="iflsig" type="hidden"></span></span></td><td class="fl sblc" align="left" nowrap="" width="25%"><a href="/advanced_search?hl=en&amp;authuser=0">Advanced search</a></td></tr></table><input id="gbv" name="gbv" type="hidden" value="1"><script nonce="yOujefy1z3mcc7vAfFRTGg==">(function(){var a,b="1";if(document&&document.getElementById)if("undefined"!=typeof XMLHttpRequest)b="2";else if("undefined"!=typeof ActiveXObject){var c,d,e=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];for(c=0;d=e[c++];)try{new ActiveXObject(d),b="2"}catch(h){}}a=b;if("2"==a&&-1==location.search.indexOf("&gbv=2")){var f=google.gbvu,g=document.getElementById("gbv");g&&(g.value=a);f&&window.setTimeout(function(){location.href=f},0)};}).call(this);</script></form><div id="gac_scont"></div><div style="font-size:83%;min-height:3.5em"><br><div id="prm"><style>.szppmdbYutt__middle-slot-promo{font-size:small;margin-bottom:32px}.szppmdbYutt__middle-slot-promo a.ZIeIlb{display:inline-block;text-decoration:none}.szppmdbYutt__middle-slot-promo img{border:none;margin-right:5px;vertical-align:middle}</style><div class="szppmdbYutt__middle-slot-promo" data-ved="0ahUKEwiLnprlt6npAhWOVc0KHbbDCX8QnIcBCAQ"><span>Here&#8217;s to every parent </span><a class="NKcBbd" href="https://www.google.com/url?q=https://www.youtube.com/watch%3Fv%3DiuB8oL1ytTk%26feature%3Dyoutu.be&amp;source=hpp&amp;id=19017869&amp;ct=3&amp;usg=AFQjCNEiUTlBGhaRpWt3CRv2VvtTj52yjA&amp;sa=X&amp;ved=0ahUKEwiLnprlt6npAhWOVc0KHbbDCX8Q8IcBCAU" rel="nofollow">taking on the role of a lifetime</a></div></div></div><span id="footer"><div style="font-size:10pt"><div style="margin:19px auto;text-align:center" id="fll"><a href="/intl/en/ads/">Advertising Programs</a><a href="/services/">Business Solutions</a><a href="/intl/en/about.html">About Google</a></div></div><p style="font-size:8pt;color:#767676">&copy; 2020 - <a href="/intl/en/policies/privacy/">Privacy</a> - <a href="/intl/en/policies/terms/">Terms</a></p></span></center><script nonce="yOujefy1z3mcc7vAfFRTGg==">(function(){window.google.cdo={height:0,width:0};(function(){var a=window.innerWidth,b=window.innerHeight;if(!a||!b){var c=window.document,d="CSS1Compat"==c.compatMode?c.documentElement:c.body;a=d.clientWidth;b=d.clientHeight}a&&b&&(a!=google.cdo.width||b!=google.cdo.height)&&google.log("","","/client_204?&atyp=i&biw="+a+"&bih="+b+"&ei="+google.kEI);}).call(this);})();(function(){var u='/xjs/_/js/k\x3dxjs.hp.en_US.DHMI7BHmNYE.O/m\x3dsb_he,d/am\x3dAF8IbA4/d\x3d1/rs\x3dACT90oG8H-3Cj0Y5D49qf4T7xEY6-uJIuQ';
setTimeout(function(){var b=document;var a="SCRIPT";"application/xhtml+xml"===b.contentType&&(a=a.toLowerCase());a=b.createElement(a);a.src=u;google.timers&&google.timers.load&&google.tick&&google.tick("load","xjsls");document.body.appendChild(a)},0);})();(function(){window.google.xjsu='/xjs/_/js/k\x3dxjs.hp.en_US.DHMI7BHmNYE.O/m\x3dsb_he,d/am\x3dAF8IbA4/d\x3d1/rs\x3dACT90oG8H-3Cj0Y5D49qf4T7xEY6-uJIuQ';})();function _DumpException(e){throw e;}
function _F_installCss(c){}
(function(){google.jl={em:[],emw:false,lls:'default',pdt:0,snet:true,up:false,uwp:true};})();(function(){var pmc='{\x22d\x22:{},\x22sb_he\x22:{\x22agen\x22:true,\x22cgen\x22:true,\x22client\x22:\x22heirloom-hp\x22,\x22dh\x22:true,\x22dhqt\x22:true,\x22ds\x22:\x22\x22,\x22ffql\x22:\x22en\x22,\x22fl\x22:true,\x22host\x22:\x22google.com\x22,\x22isbh\x22:28,\x22jsonp\x22:true,\x22msgs\x22:{\x22cibl\x22:\x22Clear Search\x22,\x22dym\x22:\x22Did you mean:\x22,\x22lcky\x22:\x22I\\u0026#39;m Feeling Lucky\x22,\x22lml\x22:\x22Learn more\x22,\x22oskt\x22:\x22Input tools\x22,\x22psrc\x22:\x22This search was removed from your \\u003Ca href\x3d\\\x22/history\\\x22\\u003EWeb History\\u003C/a\\u003E\x22,\x22psrl\x22:\x22Remove\x22,\x22sbit\x22:\x22Search by image\x22,\x22srch\x22:\x22Google Search\x22},\x22ovr\x22:{},\x22pq\x22:\x22\x22,\x22refpd\x22:true,\x22rfs\x22:[],\x22sbpl\x22:16,\x22sbpr\x22:16,\x22scd\x22:10,\x22stok\x22:\x221FwCaKbfhQ7KUZwYlwbAxh63pW4\x22,\x22uhde\x22:false}}';google.pmc=JSON.parse(pmc);})();</script>        </body></html>

2020-05-10 09:48:35,648 09:48:35.648 [main] INFO  (SmartHealthItIntegrationTest.java:44) - Done.
java apache-httpclient-4.x hl7-fhir
1个回答
0
投票

我能够通过将HttpClient的结构更改为此来获得302响应:

        HttpClient client = HttpClients.custom().disableRedirectHandling().setSSLSocketFactory(factory).build();

解决方案来自此网络文章:

https://www.baeldung.com/httpclient-stop-follow-redirect

© www.soinside.com 2019 - 2024. All rights reserved.