I am re-learning WCF and am trying a simple web service client to the US Geo Coordinate service at http://geocoder.us/

WSDL is at http://rpc.geocoder.us/dist/eg/clients/GeoCoder.wsdl

There is a C# Client at http://www.c-sharpcorner.com/uploadfile/scottlysle/geocoderuswebservice01232008035119am/geocoderuswebservice.aspx

but it does not work. It keeps saying that the address given is invalid.

I have used the sample addresses at http://geocoder.us/ and while they work in the web site they don't in the c# demo.

I have a demo Delphi application that also works against this site.

So the site  is working!!

I wrote a extremely basic web service client. I added a service reference using the WSDL and created a simple winForm application

Code

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Linq;
using  System.Text;
using  System.Windows.Forms;
using  System.ServiceModel;
using  GeoCodeTest.ServiceReference1;

namespace  GeoCodeTest
{
    public  partial  class  Form1  :Form
    {
        public  Form1()
        {
            InitializeComponent();
        }

        private  GeocoderResult[] LocationResult =null;
        private  GeoCode_PortTypeClient  proxy =null;

        private  void  btnGo_Click(object  sender,EventArgs  e)
        {
            LocationResult = proxy.geocode(txtLocation.Text);// always returns 
a null !!!
            geocoderResultBindingSource.DataSource = LocationResult;
        }

        private  void  Form1_Load(object  sender,EventArgs  e)
        {
            proxy =new  GeoCode_PortTypeClient("GeoCode_Port");
        }
    }
}

No matter what address I put in, the result returned is always null.
In the C# demo from  
http://www.c-sharpcorner.com/uploadfile/scottlysle/geocoderuswebservice01232008035119am/geocoderuswebservice.aspx
the location returned was also null.

This is the app.config file that was generated.

<?xml  version="1.0"  encoding="utf-8"  ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding  name="GeoCode_Binding"  closeTimeout="00:01:00"  
openTimeout="00:01:00"
                    receiveTimeout="00:10:00"  sendTimeout="00:01:00"  
allowCookies="false"
                    bypassProxyOnLocal="false"  
hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536"  maxBufferPoolSize="524288"  
maxReceivedMessageSize="65536"
                    messageEncoding="Text"  textEncoding="utf-8"  
transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas  maxDepth="32"  maxStringContentLength="8192"  
maxArrayLength="16384"
                        maxBytesPerRead="4096"  maxNameTableCharCount="16384"  
/>
                    <security  mode="None">
                        <transport  clientCredentialType="None"  
proxyCredentialType="None"
                            realm=""  />
                        <message  clientCredentialType="UserName"  
algorithmSuite="Default"  />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint  address="http://rpc.geocoder.us/service/soap/";  
binding="basicHttpBinding"
                bindingConfiguration="GeoCode_Binding"  
contract="ServiceReference1.GeoCode_PortType"
                name="GeoCode_Port"  />
        </client>
    </system.serviceModel>
</configuration>


There is a link to passing credentials here to fix an 
issuehttp://geocoder.us/help/msxml.shtml.
But I don't think that has anything to do with this (could be wrong). I am 
using the free service.

Can anyone tell me why the C# solution won't work where as other solutions do?
Is there something else one needs to do (apart from tearing one's hair out).

Regards Peter







Reply via email to