【问题标题】:Call an URL and send parameters as POST using PHP使用 PHP 调用 URL 并以 POST 形式发送参数
【发布时间】:2013-05-23 22:02:35
【问题描述】:

我知道这可能是一个非常愚蠢的问题,但我面临一个 PHP 需求,我用它做了一些非常简单的事情,但现在我真的需要帮助。

我有这种情况:

我使用以下 url 调用 Java Rest 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>

我评论了 cURL 的部分,因为它给我带来了一些问题,我不确定如何处理这个要求,如果有人可以帮助我,我将非常感激。提前致谢。最好的问候。

【问题讨论】:

    标签: php xml rest jsonp


    【解决方案1】:
    curl_setopt ($ch, CURLOPT_POSTFIELDS,'inputXml='.$xml);
    

    这是行不通的,你应该先对 $xml 进行 url 编码。 (使用 urlencode 函数)

    另一部分 - 不知道什么在那里不工作:) 但我没有看到你在代码中的任何地方取输入字段的值:

    $crudXmlQuery = $_POST['inputXml'];
    

    【讨论】:

    • 是的,当我从编辑器复制粘贴时,我错过了那行,但我正在使用你提到的值,但是当我执行“这个的回显”时,它向我显示奇怪的字符而不是 xml我输入了文本字段。
    • 能复制粘贴奇怪的字符吗?
    • 这些是我执行回显时打印的字符:avoirAND00all10580date0082.122.169.2440false3.0.51tcbet30]IND
    • 我解决了这个问题,对不起,我还是很笨 php。感谢您的回复,它帮助我找到了我的错误。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 2021-05-09
    • 2017-02-02
    • 2015-10-26
    • 2018-05-27
    • 2012-08-21
    • 2014-08-01
    • 2017-02-21
    相关资源
    最近更新 更多