【问题标题】:Moved Permanently error when calling a PHP WebService from .NET从 .NET 调用 PHP WebService 时永久移动错误
【发布时间】:2014-03-28 14:07:43
【问题描述】:

我在 PHP 中开发了一个 WebService...当我从 PHP 应用程序调用它时它工作得很好,但是从 .NET 调用时我遇到了问题。

我调用 Web 方法时收到的错误是“永久移动”。

服务的 WSDL 位于:http://feriados.servicios.desytec.com/feriados?wsdl

.NET 代码如下:

private void button1_Click(object sender, EventArgs e)
{
    Servicio.Desytec_Feriados svc = new Servicio.Desytec_Feriados();
    var feriados = svc.GetHolidays("8cd4c502f69b5606a8bef291deaac1ba83bb9876", "cl", "2014", "5");

    System.Diagnostics.Debug.WriteLine(feriados.Length);
}

【问题讨论】:

  • 这可能意味着您的网络服务正在重定向 URL....如果您使用 System.Net.HttpWebRequest 或 System.Net.WebClient 看看是否有一种方法可以自动跟踪重定向....或检查状态是否永久移动(状态代码 301)...并检查响应标头以跟随 URL
  • 没有重定向...正如我所说,从 PHP 网页调用 Web 服务时可以工作。如果使用 WSDL url,则 XML 文档会正确显示。
  • "当我调用 Web 方法时收到的错误是“永久移动”。显然,您得到的不是状态 200 OK。您认为 .NET 在状态上撒谎吗? 你可能会得到 301...PHP 可能会自动跟随重定向标头,但 dot net 不会。你能发布你的代码,实际上是使用 WebClient 或 HttpRequest 类吗?
  • 如何找到该代码?当我添加 Web 服务引用时,它会添加一个 Reference.cs 文件,其中包含一个派生自 SoapHttpClientProtocol 的类。在其中,对 Invoke 的调用实际上调用了实际的方法。
  • 有人知道解决办法吗?

标签: c# php .net web-services wsdl


【解决方案1】:

这是由于 WSDL 的 URL 指定错误。它写成http://destec.com/app.php/feriados,但正确的是http://destec.com/feriados,因为.htaccess 正在剥离app.php 部分(webservice 是使用Symfony PHP 框架编写的)。

问候 詹姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2018-06-23
    • 1970-01-01
    • 2017-10-27
    • 2011-07-27
    • 2017-09-01
    • 1970-01-01
    相关资源
    最近更新 更多