[英]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.