【问题标题】:cURL call to web service not working对 Web 服务的 cURL 调用不起作用
【发布时间】:2013-08-12 17:58:56
【问题描述】:

我正在尝试在https://salesgenie.com/brandingservice/details?url=att.salesgenie.com 对 .NET RESTful Web 服务进行简单的 get 调用。进行 cURL 调用的测试页面位于https://test-cms.salesgenie.com/wp-content/themes/salesgenie/branding-proxy.php 可以在浏览器中调用 Web 服务,但调用时会超时通过卷曲。这是branding-proxy.php页面的代码:

if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}       
$url = 'https://salesgenie.com/brandingservice/details?url=att.salesgenie.com';
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($handle, CURLOPT_SSLVERSION,3);
$response = curl_exec($handle);
$code = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);
setcookie('CmsCookie', $code . '    ' . $response, 0, '/', 'salesgenie.com', 0);
echo 'Code:' . $code."<br />Response: ".$response;

【问题讨论】:

  • 您尝试添加CURLOPT_USERAGENTCURLOPT_HEADER 吗?
  • 我已经尝试使用 Content-type 的 HEADER 和使用组合代理的 USERAGENT。
  • 嗯...我将运行一些测试然后发布答案。
  • 看来我们的测试环境服务器的 IP 被我们的基础架构团队阻止调用我们的 .NET 应用程序。相同的代码能够在我们的开发和生产环境中可靠地运行。谈论用头撞墙……然后发现有人把墙挡在了你的路上。 叹息
  • 那么我实际上是对的,在某些方面。

标签: php web-services curl restful-url


【解决方案1】:

我可以看到在使用您的链接时发生超时,但我认为问题发生在其他地方。我得出这个结论的原因是我将您的代码上传到了我自己的网站。效果很好。

重要

如果您是 salesgenie.com 的所有者,那么我认为您的服务器有问题,因为有时我得到的响应是超时(代码 0)、代码 200(带有结果)或代码 320。所以问题可能是服务器本身的问题。

技巧

  • 尝试删除setcookie 以节省一些处理时间。
  • 还可以尝试使用http 而不是https,因为https 需要更多处理才能使用。

【讨论】:

  • 那么 salesgenie 站点被强制使用 https,因此呼叫将始终路由到 https。我可以出于测试目的取出 cookie,但最终这就是网络服务调用的目的,即提取品牌信息并将其写入 cookie。
  • 嗯,我得到的结果很简单,不稳定,而且不一致。
猜你喜欢
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多