簡體   English   中英

用變量在Java中卷曲POST請求

[英]Curl POST request in java with variables

所以我有這段代碼,我試圖使用以前開發的Web應用程序使用特定的架構來驗證xml。 在網站上,它給出了curl命令,我做了一些研究,試圖在Java中無濟於事地執行它。 我找到了一個名為httpclient的api,但找不到用於POST的任何內容

問題的后半部分; 如果這是正確的格式,那么它一定是我在curl命令中顯示xml變量的方式。

@POST
@Path("/Validate")
//Uncomment when testing with real xml
//@Produces("application/xml")
public String validate(@FormParam("xml") String xml)
{
    System.out.println(xml);
    System.out.println("validate");
    try {
        Process process = Runtime.getRuntime().exec( "curl -X POST --data-    urlencode 'xml=<hml>xml</hml>' http://miring.b12x.org/validator/ValidateMiring/ ");
        BufferedReader input = new BufferedReader(new     InputStreamReader(process.getInputStream()));
        String cmdXML="";
        String line=null;
        while((line=input.readLine())!=null)
        {
            cmdXML+=line;
        }
    } catch (IOException e) {
        logger.error("Something went wrong in validating "+ e);
        System.out.println("Error in validation");
    }
    return "stuff";
}

首先,當命令包含多個元素時, runtime.exec(...)需要String[]

Java API運行時: http : //docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec(java.lang.String [])

其次,您必須確保該命令對您有用:

curl -X POST --data-urlencode 'xml=<hml>xml</hml>' http://miring.b12x.org/validator/ValidateMiring/

最后,您必須指出命令curl的完整路徑。

示例:在Unix上為/usr/bin/curl ,在Windows上為C:/Program Files/Curl/curl

小心

下面的代碼,則必須更換<PATH_TO_CURL>由命令的實際路徑curl

你可以試試這個代碼嗎?

@POST
@Path("/Validate")
//Uncomment when testing with real xml
//@Produces("application/xml")
public String validate(@FormParam("xml") String xml)
{
    System.out.println(xml);
    System.out.println("validate");
    try {
        Runtime runtime = Runtime.getRuntime();
        String[] command = {"<PATH_TO_CURL>/curl", "-X", "POST", "--data-urlencode", "'xml=<hml>xml</hml>'", " http://miring.b12x.org/validator/ValidateMiring/"}
        Process process = runtime.exec(command);
        BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String cmdXML="";
        String line=null;
        while((line=input.readLine())!=null)
        {
            cmdXML+=line;
        }
    } catch (IOException e) {
        logger.error("Something went wrong in validating "+ e);
        System.out.println("Error in validation");
    }
    return "stuff";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM