使用ant,如何打开具有多个参数的URL

时间:2012-05-17 12:24:29

标签: ant

我正在使用:

<exec executable="cmd">
<arg line="${argLine}" />
</exec>

argLine

<property name="argLine" value="http://127.0.0.1:/product/findSameStyleSku.json?skuId=305&amp;style=120662"/>

有2个参数,我使用&amp;转义&符号

但只能打开http://127.0.0.1/product/findSameStyleSku.json?skuId=305

style param丢失了

简而言之,我想要运行

<target name="111test"> 
    <exec executable="cmd" output="e:/test.txt">
        <arg line="/c start '' 'http://127.0.0.1/product/findSameStyleSku.json?skuId=305&amp;%3bstyle=120662'" />
    </exec>  
</target>

2012-05-23更新

是的,Windows系统

我将代码更改为

<target name="111test">
    <exec executable="cmd" output="e:/test.txt">
        <arg value="/c" />
        <arg value="start" />
        <arg value="" />
        <arg value="http://127.0.0.1/product/findSameStyleSku.json?skuId=305&amp;%3bstyle=120662" />
    </exec>
</target>

运行蚂蚁

仅打开

http://127.0.0.1/product/findSameStyleSku.json?skuId=305

我将“&amp;%3b”更改为“&amp;

也只是打开

http://127.0.0.1/product/findSameStyleSku.json?skuId=305

但在cmd中,我使用

start "" "http://127.0.0.1/product/findSameStyleSku.json?skuId=305&style=120662"

可以打开http://127.0.0.1/product/findSameStyleSku.json?skuId=305&style=120662

1 个答案:

答案 0 :(得分:1)

不完全了解它试图打开的内容。是真的试图用***?skuId=305打开一个网址,还是你试图说它试图打开你给它的网址,但不包括分号?

如果您说它不在URL的最后部分,您应该了解分号不能是您发送的实际网址的一部分。它们是reserved,必须经过特殊编码。

确保分号甚至可以在那里。当您执行 GET 请求时,您拥有基本URL,然后在该URL之后出现问号。之后,您将传递一系列参数传递给URL,每个参数由&符号分隔。在您的情况下,您似乎想要向URL发送请求:

  • http://127.0.0.1:/product/findSameStyleSku.json

使用以下两个参数:

  • skuId = 305
  • style = 120662

所以,看起来分号是伪造的。否则,您传递参数 ;style 而不是 style 。而且,这似乎不正确。

如果您确定分号确实存在,请尝试使用%3b替换网址中的分号:

<property name="argLine" value="http://127.0.0.1:/product/findSameStyleSku.json?skuId=305&amp;%3bstyle=120662"/>

响应

  

,对不起,它没有正常工作,我更新了我的问题 - 感觉

不幸的是,由于这是在Windows机器上,并且是在您的机器上本地运行的东西,我不能自己运行测试。

但是,根据帖子的第一部分,您尝试运行以下命令:

C> cmd http://127.0.0.1:/product/findSameStyleSku.json?skuId=305&amp;style=120662

稍后在你的帖子中,你说你想要跑:

C> cmd /c start '' 'http://127.0.0.1/product/findSameStyleSku.json?skuId=305&amp;%3bstyle=120662'

第一个肯定不会从命令行工作。第二个吗?

我使用这个在我当前的计算机上做了一些测试:

<property name="argLine"
    value="http://etzahaim.org/index.php?option=com_content&amp;task=blogcategory&amp;id=15&amp;Itemid=34"/>
<exec executable="curl">
    <arg value="${argLine}"/>
    <arg value="--include"/>
    <arg value="--output"/>
    <arg value="curl.out"/>
</exec>

这是获取URL的curl命令。此URL也使用GET方法,因此它在URL中也有一个问号和一些星号。这对我有用。

尝试从<arg line='start' '' 'http://...>切换到使用<arg line>,看看是否有帮助:

<target name="111test"> 
    <exec executable="cmd" output="e:/test.txt">
        <arg value="/c"/>
        <arg value="start"/>
        <arg value=""/>
        <arg value="${argline}" />
</exec>