2013-05-28 34 views
0

我知道这可能是一个非常虚拟的问题,但我面对PHP的一个需求,我已经做了一些非常简单的事情,但现在我真的需要帮助。使用PHP调用一个URL并发送参数作为POST

我有这样的场景:

我使用以下URL调用Java休息WS:

http://192.168.3.41:8021/com.search.ws.module.ModuleSearch/getResults/jsonp?xmlQuery=%3C?xml%20version%3D'1.0'%20encoding%3D'UTF-8'?%3E%3Cquery%20ids%3D%2216535%22%3E%3CmatchWord%3Ehave%3C/matchWord%3E%3CfullText%3E%3C![CDATA[]]%3E%3C/fullText%3E%3CquotedText%3E%3C!... 

但对于这一点,我不得不使用Java的Util类来代替某些特殊字符在XML参数,因为原始XML是一样的东西:

<?xml version='1.0' encoding='UTF-8'?><query ids="16914"><matchWord>avoir</matchWord><fullText><![CDATA[]]></fullText><quotedText><![CDATA[]]></quotedText><sensitivity></sensitivity><operator>AND</operator><offsetCooc>0</offsetCooc><cooc></cooc><collection>0</collection><searchOn>all</searchOn><nbResultDisplay>10</nbResultDisplay><nbResultatsParAspect>... 

现在,我一直要求创建一个PHP页面中,我可以将XML作为输入,并请求对REST WS美国提交按钮。我做了一个方法,但不是似乎工作,在这里我贴我的代码:

<?php 
    if($_POST['btnSubmit'] == "Submit") 
    { 
    $crudXmlQuery = $_POST['inputXml']; 
    echo $crudXmlQuery; 
    echo "================================================="; 
    $xml = str_replace("%", "%25", $crudXmlQuery); 
    $xml = str_replace("&", "%26", $crudXmlQuery); 
    $xml = str_replace("=", "%3D", $crudXmlQuery); 
    echo $xml; 
    //$ch = curl_init($url); 
    //curl_setopt ($ch, CURLOPT_POST, 1); 
    //curl_setopt ($ch, CURLOPT_POSTFIELDS,'inputXml='.$xml); 
    //$info = curl_exec ($ch); 
    //curl_close ($ch); 
    } 
?> 
<form action="sampleIndex.php" method="post"> 
    Please insert your XML Query 
    <input type='text' name='inputXml' value='<?=$crudXmlQuery?>'/> 

    <input type='submit' name='btnSubmit' value='Submit' /> 
</form> 

我评论卷曲的部分,因为它给了我一些问题,我不知道如何处理这个要求还没有,如果有人能帮助我,我会非常感激。提前致谢。最好的祝福。

回答

1
curl_setopt ($ch, CURLOPT_POSTFIELDS,'inputXml='.$xml); 

这是不行的,你应该首先编码$ xml的URL。 (使用进行urlencode功能)

的另一部分 - 不知道究竟是什么工作不存在:)但我没有看到你正在输入字段的值在你的代码的任何地方:

$crudXmlQuery = $_POST['inputXml']; 
+0

是的,我错过了当我从我的编辑器复制粘贴时,但我正如你所提到的,但是当我执行“这个回声”时,它显示我奇怪的字符,而不是我放在文本字段中的xml。 –

+0

你能复制粘贴怪异字符吗? –

+0

这些是我执行回声时打印的字符:avoirAND00all10580date0082.122.169.2440false3.0.51tcbet30] IND –

相关问题