【问题标题】:Sending POST via curl to the server doesn't work通过 curl 向服务器发送 POST 不起作用
【发布时间】:2018-03-22 04:56:30
【问题描述】:

我正在尝试向在localhost:9090 上运行的服务器 (JBOSS) 发送一个 POST 请求,如下所示,但它似乎不起作用。我的意思是,我没有看到我的网络服务被执行。我在下面做所有事情吗?

由于$_POST["mydata"] 包含以下内容:

[{ "name": "FirstName", "value": "Mickey" }, { "name": "LastName", "value": "Mouse" }]

这是在 javascript 对象上运行 JSON.stringify() 的结果(使用 serializeArray()),我没有在标头中发送 application/json 相关的东西。

$urlTest = 'http://localhost:9090/JAXRS_POST_Request/rest/Request/insertDataToDB';

        $rCURL = curl_init();
        curl_setopt($rCURL, CURLOPT_CUSTOMREQUEST, "POST"); 
        curl_setopt($rCURL, CURLOPT_POSTFIELDS, $_POST["myData"]);
        curl_setopt($rCURL, CURLOPT_URL, $urlTest);
        curl_setopt($rCURL, CURLOPT_HEADER, 0);
        curl_setopt($rCURL, CURLOPT_RETURNTRANSFER, 1);
        $response_post = curl_exec($rCURL);
        curl_close($rCURL);

但是如果我必须使用像 POSTMAN 这样的客户端手动测试 web 服务,我必须在标题下指定 Content-Type : application/json 并通过 Body 像这样发送它,它在那里工作得非常好:

但是在通过 curl 发送请求时,由于JSON.stringify() 将 javascript 对象转换为字符串以将其发送到服务器,所以我很困惑是否需要在我的 POST 请求中使用标头。

附:一个简单的基于 curl 的 GET 请求对我来说效果很好,所以我的应用程序成功地联系了服务器。

【问题讨论】:

    标签: php curl http-post


    【解决方案1】:

    试试这个:

    $urlTest = 'http://localhost:9090/JAXRS_POST_Request/rest/Request/insertDataToDB';
    
    $data = 'FirstName=Mickey&LastName=Mouse';
    
    $rCURL = curl_init();
    curl_setopt($rCurl, CURLOPT_POST, true);//
    curl_setopt($rCURL, CURLOPT_POSTFIELDS, $data);
    curl_setopt($rCURL, CURLOPT_URL, $urlTest);
    curl_setopt($rCURL, CURLOPT_HEADER, 0);
    curl_setopt($rCurl, CURLOPT_RETURNTRANSFER, true);
    
    if(curl_exec($rCurl) === false){
    
        echo 'Curl error: ' . curl_error($rCurl);
    
    }else{
    
      $response_post = curl_exec($rCURL);
    
    }
    
    curl_close($rCurl);
    

    【讨论】:

    • 谢谢,但这不起作用。有没有办法调试,因为在这种情况下我没有返回任何东西,而是只通过 web 服务插入到数据库中。
    • 如果您有权访问您发送帖子请求的页面的代码,请将其添加到您的问题中。我们需要知道页面是否需要 json。此外,您可能需要在 URL 中为您的 insertDataToDB 文件添加扩展名。
    • 实际上它是我编写的一个Java webservice,我发送数据的方式在上面的POSTMAN客户端截图中提到。不确定 Java 服务代码是否有帮助?
    • 我对 java web 服务没有任何经验。但是您确实需要确保以 Web 服务需要它的表单/方法发送数据。它是否期望参数是数组的正常发布请求,或者它是否需要一个 json 对象其中的参数。没有这些知识,我帮不了你。但是运行我添加到答案中的错误代码,看看是否能给你一个线索。
    • 它期待 JSON 对象而不是普通帖子。如果这回答了您的问题,请告诉我。谢谢 我可以知道你为什么更新你的答案吗?
    猜你喜欢
    • 2016-03-08
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多