2012-01-27 23 views

Odpowiedz

4

To po prostu nie jest usługą SOAP Web. To usługa REST XML. Usługi REST nie zapewniają samoopisujących się danych meta w postaci WSDL.

Potrzebujesz innego sposobu komunikowania się z usługą. Jeśli nie ma dostępnego wrappera C#, prawdopodobnie będziesz musiał sam napisać generator adresów URL i sprawić, że struktura .NET Framework będzie deserializować dokumenty xml do ładnie napisanych klas (to ty też sam napisz).

Spróbuj przeczytać więcej na stronie: Oddle Developer Center

EDIT: Ponadto, jeśli pobierasz dokument XML z poziomu aplikacji internetowej, istnieje kilka rzeczy, które trzeba rozważyć.

Podczas pracy upewnij się, że używasz Visual Studio jako Administrator.

Po wdrożeniu u dostawcy usług hostingowych upewnij się, że nie używasz Średniego zaufania, ponieważ może to uniemożliwić dostęp do zewnętrznych źródeł internetowych.

Ale nadal nie mogę zrozumieć, dlaczego okno dialogowe nie może połączyć się z serwerem internetowym Oodle. Sprawdź ustawienia sieciowe, ustawienia zapory sieciowej i tak dalej. Jeśli możesz odwiedzić adres URL w swojej przeglądarce, powinieneś być w stanie pobrać dokument za pomocą kodu.

+2

Ale jak uzyskać dane z URL? Mam na myśli zupełnie nowe żądanie i odpowiedzi! Jak mogę go odwzorować? – Chintan

+1

Możesz pozwolić WCF obsługiwać to za Ciebie. Oto kilka wskazówek: http://blogs.msdn.com/b/pedram/archive/2008/04/21/how-to-consume-rest-services-with-wcf.aspx http: // msdn. microsoft.com/en-us/magazine/dd315413.aspx –

+0

... lub robisz to wszystko ręcznie. Następnie potrzebujesz metody do generowania poprawnych adresów URL, następnie użyj obiektu 'WebClient' w celu utworzenia żądania, a następnie otwórz odpowiedź' Stream'. Następnie istnieje kilka różnych sposobów odzyskania danych w uporządkowany sposób. 'XmlDocument',' XDocument' lub 'XmlSerializer' to punkty startowe ... –

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()); 

    } 

Stwierdzenie to stwarza wyjątek

string result = webClient.DownloadString(url); 

i wyjątków szczegóły są

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

Przeczytaj komunikat o błędzie. Mówi ci, co jest nie tak. ** Próba połączenia nie powiodła się, ponieważ podłączona strona nie odpowiedziała poprawnie po pewnym czasie lub nawiązane połączenie nie powiodło się, ponieważ podłączony host nie odpowiedział ** Albo serwer przekroczył limit czasu, albo odmawia połączenia z innych powodów. Może są tylko pewne wartości 'User-Agent', które są dozwolone ... Czy jesteś w stanie odwiedzić adres URL za pomocą przeglądarki internetowej?Dla mnie pobranie dokumentu XML za pomocą tego adresu trwa około 6 sekund. Czy to potrwa dłużej? Czy otrzymujesz nawet wynik? –

+0

Och, chwileczkę ... Czy to jest aplikacja internetowa? Czy korzystasz z Medium Trust? I znowu uruchamiasz instancję Visual Studio jako Administrator? Ponieważ kiedy uruchomię twój kod z poziomu aplikacji Console (używając Console.WriteLine zamiast Response.Write), działa idealnie. Spróbuj uruchomić VS jako administrator! Zaktualizowałem swoją odpowiedź. –

+2

Pozwól mi działać jako Administrator! – Chintan

Powiązane problemy