日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文介紹了使用HttpURLConnection執(zhí)行cURL命令的Java返回204(HTTP_NO_CONTENT)的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我使用的是Java 11。在命令行上執(zhí)行時(shí),我有以下cURL命令:

curl --location --request GET 'http://xxx.xxx.co.za:8080/document/details/Select+docId+From+%27Workflow+Club%2FCustomer+Invoices%27+where+recursive+%3D+true+and+invoice_number+%3D%271221669023%27' --header 'Authorization: Basic xxx'

返回以下內(nèi)容:

{errorMessage: 'PaperTrail API only available in enterprise edition'}

但是,當(dāng)我嘗試使用HttpURLConnection在Java應(yīng)用程序中執(zhí)行相同的URL時(shí),它返回空白響應(yīng)。

private static final String USER_AGENT = "Mozilla/5.0";

private static final String GET_URL = "http://xxx.xxx.co.za:8080/document/details/";
private static final String GET_URL_QRY = "Select docId From 'Workflow Club/Customer Invoices' where recursive = true and invoice_number =':1'";
private static final String GET_AUTH_ENC = "Basic xxx";

@Override
public String getDocId(Long invoiceNumber) {
    String get_url_qry = StringUtils.replace(GET_URL_QRY, ":1", Long.toString(invoiceNumber));
    get_url_qry = URLEncoder.encode(get_url_qry, StandardCharsets.UTF_8);
    final String get_url = GET_URL+get_url_qry;
    try {
        URL url = new URL(get_url);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("Authorization", GET_AUTH_ENC);
        con.setRequestMethod("GET");
        con.setRequestProperty("User-Agent", USER_AGENT);
        int responseCode = con.getResponseCode();
        logger.info(get_url+" -> GET Response Code :: " + responseCode);
        if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_NO_CONTENT) { // success
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            String resp = response.toString();
            logger.info(responseCode+" Response: '"+resp+"'.");
        } else {
            logger.error("GET request did not work (responseCode: "+responseCode+").");
        }
    } catch (MalformedURLException e) {
        logger.error("MalformedURLException creating URL '"+get_url+"'. "+e.getMessage());
    } catch (IOException e) {
        logger.error("IOException creating connection from URL '"+get_url+"'. "+e.getMessage());
    }
    return null;
}

以空白響應(yīng)輸出以下內(nèi)容:

204 Response: ''.

問(wèn)題

如何使Java應(yīng)用程序也返回與命令行調(diào)用相同的結(jié)果?

更新

我有一個(gè)不同的POST URL,我也需要調(diào)用它,我可以成功地調(diào)用它。所以我的Get調(diào)用有問(wèn)題。

private static final String USER_AGENT = "Mozilla/5.0";

例如,Get調(diào)用返回204,沒(méi)有內(nèi)容。

private String getDocId(Long invoiceNumber) {
    String get_url_qry = StringUtils.replace(GET_URL_QRY, ":1", Long.toString(invoiceNumber));
    get_url_qry = URLEncoder.encode(get_url_qry, StandardCharsets.UTF_8);
    final String get_url = GET_URL+get_url_qry;
    try {
        URL url = new URL(get_url);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("Authorization", GET_AUTH_ENC);
        con.setRequestMethod("GET");
        con.setRequestProperty("User-Agent", USER_AGENT);
        con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        Map<String,String> data = handleResponse(con);
        return data.get("docId");
    } catch (MalformedURLException e) {
        logger.error("MalformedURLException creating URL '"+get_url+"'. "+e.getMessage());
    } catch (IOException e) {
        logger.error("IOException creating connection from URL '"+get_url+"'. "+e.getMessage());
    }
    return null;
}

返回200的POST調(diào)用和預(yù)期內(nèi)容。

private String getDocLink(String docId) {
    if (StringUtils.isNotBlank(docId)) {
        try {
            URL url = new URL(POST_URL);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestProperty("Authorization", GET_AUTH_ENC);
            con.setRequestMethod("POST");
            con.setRequestProperty("User-Agent", USER_AGENT);
            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            byte[] postDataBytes = getPostData(docId);
            con.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
            con.setDoOutput(true);
            con.getOutputStream().write(postDataBytes);
            Map<String,String> data = handleResponse(con);
            return data.get("url");
        } catch (IOException e) {
            logger.error("IOException creating connection from URL '"+POST_URL+"'. "+e.getMessage());
        }
    } else {
        logger.error("No docId provided when trying to get a document link.");
    }
    return null;
}

所以看到POST調(diào)用起作用了,我想我一定是GET調(diào)用出了什么問(wèn)題。

推薦答案

您是否嘗試在您的Java代碼中設(shè)置cURL將使用的相同用戶代理?類似curl/7.37.0的內(nèi)容?
就我所知,這應(yīng)該就是所有的不同之處。在重定向之后,撇開(kāi)卷曲。但由于沒(méi)有重定向,我猜可能是用戶代理起了作用。

有很多服務(wù)器應(yīng)用程序在被瀏覽器調(diào)用時(shí)表現(xiàn)不同(就像您通過(guò)將User-Agent設(shè)置為Mozilla/5.0來(lái)使其思考一樣),而不是像cURL這樣的其他應(yīng)用程序。

這篇關(guān)于使用HttpURLConnection執(zhí)行cURL命令的Java返回204(HTTP_NO_CONTENT)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,

分享到:
標(biāo)簽:curl HTTP_NO_CONTENT HttpURLConnection Java 命令 執(zhí)行 返回
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定