2012-01-27 29 views

Respuesta

4

Eso simplemente no es un servicio web SOAP. Es un servicio REST XML. Los servicios REST no proporcionan metadatos autodescriptivos en forma de WSDL.

Necesita otra forma de comunicarse con el servicio. Si no hay un contenedor C# disponible, probablemente tendrá que escribir el generador de URL usted mismo, y hacer que .NET Framework deserialice los documentos xml para usted en clases bien escritas (que usted, también, escriba usted mismo).

tratar de leer más en: Oddle Developer Center

EDIT: También, si está descargando el documento XML desde una aplicación web, hay un par de cosas que hay que tener en cuenta.

Cuando esté desarrollando, asegúrese de ejecutar Visual Studio como administrador .

Cuando implemente en su proveedor de alojamiento, asegúrese de no ejecutar Medium Trust, ya que esto podría impedir el acceso a fuentes web externas.

Pero aun así, no puedo entender por qué el cuadro de diálogo Agregar referencia web no se puede conectar al servidor web oodle. Verifique la configuración de red, la configuración del firewall, etc. Si puede visitar la URL en su navegador web, debe poder descargar el documento a través del código.

+2

Pero cómo obtener datos de URL? Quiero decir que se generan solicitudes y respuestas totalmente nuevas. Entonces, ¿cómo puedo mapearlo? – Chintan

+1

Puede dejar que WCF lo haga por usted. Aquí hay un par de sugerencias: http://blogs.msdn.com/b/pedram/archive/2008/04/21/how-toumers-consume-rest-services-with-wcf.aspx http: // msdn. microsoft.com/en-us/magazine/dd315413.aspx –

+0

... o lo hace todo de forma manual. Luego necesita algún método para generar las direcciones URL adecuadas, luego usa un objeto 'WebClient' para crear una solicitud y luego abre la respuesta' Stream'. Luego hay algunas maneras diferentes de recuperar los datos de una manera estructurada. 'XmlDocument',' XDocument' o 'XmlSerializer' son puntos de partida ... –

4
try 
    { 
     string url = @"http://api.oodle.com/api/v2/listings?key=TEST&region=chicago"; 

     WebClient webClient = new WebClient(); 
     webClient.Encoding = Encoding.UTF8; 
     string result = webClient.DownloadString(url); 

     } 
    catch (Exception ex) 
    { 
     Response.Write(ex.ToString()); 

    } 

Esta sentencia crea una excepción

string result = webClient.DownloadString(url); 

y excepción detalles son

System.Net.WebException: Unable to connect to the remote server ---> 
System.Net.Sockets.SocketException: A connection attempt failed because the connected 
party did not properly respond after a period of time, or established connection failed 
because connected host has failed to respond 192.168.0.101:808 at 
System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress 
socketAddress) at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, 
Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, 
IAsyncResult asyncResult, Int32 timeout, Exception& exception) --- End of inner exception 
stack trace --- at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& 
request) at System.Net.WebClient.DownloadString(Uri address) at 
System.Net.WebClient.DownloadString(String address) at _Default.lnkGoTo_Click(Object 
sender, EventArgs e) in d:\MyDemoz\oodleDemo\Default.aspx.cs:line 58 
+0

Lea el mensaje de error. Te dice lo que está mal. ** Falló el intento de conexión porque la parte conectada no respondió correctamente después de un período de tiempo, o la conexión establecida falló porque el host conectado no pudo responder ** O el servidor agota el tiempo de espera o rechaza su conexión por otros motivos. Tal vez solo hay ciertos valores de 'User-Agent' que están permitidos ... ¿Puede visitar la URL usando su navegador web?Para mí, toma aproximadamente 6 segundos descargar el documento XML usando esa URL. ¿Te toma más tiempo? ¿Incluso obtienes un resultado? –

+0

Oh, espera un minuto ... ¿Es esta una aplicación web? ¿Estás ejecutando Medium Trust? Y de nuevo, ¿está ejecutando su instancia de Visual Studio como administrador? Porque cuando ejecuto el código desde una aplicación de consola (usando Console.WriteLine en lugar de Response.Write), funciona perfectamente. Intenta ejecutar VS como administrador. Actualicé mi respuesta. –

+2

¡Déjeme correr como administrador! – Chintan

Cuestiones relacionadas