为啥http请求(java)调用php接口发送一次请求(日志只打印一次),php服务的收到两次请求

牛牛Doing 发布于 2018/03/08 10:56
阅读 1K+
收藏 0

这是请求代码,而且php服务端的两次请求相差100多毫秒

public static HttpResponse doHttp(String urlStr, String method, String charSet, String postStr, String timeOut,
            String contextType) {
        if (method == null || (!GET.equalsIgnoreCase(method) && !POST.equalsIgnoreCase(method))) {
            return null;
        }
        URL url = null;
        try {
            url = new URL(urlStr);
        } catch (MalformedURLException e) {
            logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, e.getMessage()));
            return null;
        }
        if ("https".equalsIgnoreCase(urlStr.substring(0, 5))) {
            SSLContext sslContext = null;
            try {
                sslContext = SSLContext.getInstance("TLS");
                X509TrustManager xtmArray[] = { new HttpX509TrustManager() };
                sslContext.init(null, xtmArray, new SecureRandom());
            } catch (GeneralSecurityException gse) {
                logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, gse.getMessage()));
            }
            if (sslContext != null)
                HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
            HttpsURLConnection.setDefaultHostnameVerifier(new HttpHostnameVerifier());
        }
        HttpURLConnection httpURLConnection = null;
        try {
            httpURLConnection = (HttpURLConnection) url.openConnection();
        } catch (IOException e) {
            logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, e.getMessage()));
            return null;
        }
        httpURLConnection.setConnectTimeout(Integer.parseInt(timeOut));
        httpURLConnection.setReadTimeout(Integer.parseInt(timeOut));
        try {
            httpURLConnection.setRequestMethod(method.toUpperCase());
        } catch (ProtocolException e) {
            logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, e.getMessage()));
            return null;
        }
        if (POST.equalsIgnoreCase(method)) {
            httpURLConnection.setDoOutput(true);
            if (contextType != null)
                httpURLConnection.setRequestProperty("Content-type", contextType);
            PrintWriter printWriter = null;
            try {
                printWriter = new PrintWriter(new OutputStreamWriter(httpURLConnection.getOutputStream(), charSet));
            } catch (UnsupportedEncodingException e) {
                logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, e.getMessage()));
                return null;
            } catch (IOException e) {
                logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, e.getMessage()));
                return null;
            }
            printWriter.write(postStr);
            printWriter.flush();
        }
        InputStream inputStream = null;
        try {
            inputStream = httpURLConnection.getInputStream();
        } catch (IOException e) {
            logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, e.getMessage()));
            return null;
        }
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        int data = 0;
        int statusCode = 0;
        try {
            statusCode = httpURLConnection.getResponseCode();
            if (statusCode < HttpURLConnection.HTTP_OK || statusCode >= HttpURLConnection.HTTP_MULT_CHOICE) {
                HttpResponse httpRsponse = new HttpResponse();
                httpRsponse.setStatusCode(statusCode);
                return httpRsponse;
            }
            while ((data = inputStream.read()) != -1) {
                byteArrayOutputStream.write(data);
            }
        } catch (Exception e) {
            logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, e.getMessage()));
            return null;
        }
        byte[] returnBytes = byteArrayOutputStream.toByteArray();
        String returnStr = null;
        try {
            returnStr = new String(returnBytes, charSet);
        } catch (UnsupportedEncodingException e) {
            logger.error(String.format("请求失败:url【%s】-【%s】", urlStr, e.getMessage()));
            return null;
        }
        HttpResponse httpRsponse = new HttpResponse();
        httpRsponse.setStatusCode(statusCode);
        httpRsponse.setRspStr(returnStr);
        return httpRsponse;
    }

加载中
0
zhengcong
zhengcong
协议就是这样的,先试探一下你是不是跨域
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部