小编Nat*_*ffe的帖子

有人使用Bing Map Web Services和Delphi吗?

有没有人使用Bing Map Web Services(以前的Virtual Earth Web Services)与Delphi合作?

根据我迄今为止的经验(使用Delphi和Visual Studio C#),我准备放弃它并使用MapPoint Web服务,直到Bing Maps Web Services的未来版本出现.但是,我以为我会在这里发一个问题作为最后的手段......

我导入了Token Service和Geocode Services WSDL文档.

我成功地从令牌服务中获取了令牌,但是根本无法让Geocode服务工作.它总是返回以下错误消息:由于EndpointDispatcher上的ContractFilter不匹配,无法在接收方处理带有Action''的消息.这可能是由于合同不匹配(发送方与接收方之间的操作不匹配)或发送方与接收方之间的绑定/安全性不匹配.检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息,传输,无).

我注意到Delphi没有为SOAPAction标头指定值,所以我尝试指定" http://staging.dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geocode "并得到以下错误消息:

由于内部错误,服务器无法处理请求.有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或来自<serviceDebug>配置行为),以便将异常信息发送回客户端,或者根据Microsoft .NET Framework打开跟踪3.0 SDK文档并检查服务器跟踪日志.

下面是我的Delphi代码和发送的原始XML,然后是来自Microsoft的示例C#代码的类似调用发送的原始XML.XML有几个不同之处,但我不确定关键是什么区别.

var
  Service: IGeocodeService;
  Request: Geocode;
  Response: GeocodeResponse3;
  ResponseIndex: Integer;
  Token: WideString;
  Filters: ArrayOfFilterBase;
begin
  Token := GetToken;

  Service := GetIGeocodeService;

  Request := Geocode.Create;
  try
    Request.request := GeocodeRequest.Create;

    Request.request.Credentials := GeocodeService.Credentials.Create; // Freed by GeocodeRequest class
    Request.request.Credentials.Token := Token;

    Request.request.Query := AddressEdit.Text;

    Request.request.Options := GeocodeOptions.Create;

    SetLength( Filters, 1 );
    Filters[ 0 ] := ConfidenceFilter.Create; …
Run Code Online (Sandbox Code Playgroud)

delphi mapping soap web-services bing

9
推荐指数
1
解决办法
2686
查看次数

标签 统计

bing ×1

delphi ×1

mapping ×1

soap ×1

web-services ×1