2011-01-06 5 views
0

Ich versuche, eine einfache Anwendung zu erstellen, die eine HTTP-Anforderung auf einen Tastendruck ausführt. Hier ist der gesamte Code, den ich bekam aus einem Nachschlagewerk:HTTPWebRequest.GetResponse() löst Verbindungsfehlerausnahme aus

mit System.Collections.Generic;
mit System.ComponentModel;
mit System.Data;
mit System.Drawing;
mit System.Text;
mit System.Windows.Forms;
mit System.IO;
mit System.Net;

Namensraum emulator2

{

öffentliche Teilklasse Form1: Form

{

public Form1()

{

InitializeComponent();

}

public void button1_Click (object sender, EventArgs e)

{

Uri l_Uri = new Uri ("http://www.testing.com");

HttpWebRequest l_WebReq = (HttpWebRequest) WebRequest.Create (l_Uri);

HttpWebResponse l_WebResponse = (HttpWebResponse) l_WebReq.GetResponse();

Stream l_responseStream = l_WebResponse.GetResponseStream();

StreamReader l_SReader = neuer StreamReader (l_responseStream);

Zeichenfolge resultstring = l_SReader.ReadToEnd();

Console.WriteLine (resultstring);

}

}

}

Die Sache, die mir ein Rätsel ist, dass, wenn ich das ganze Stück Code auf eine Windows-Anwendung verschieben, es funktioniert gut. Aber wenn ich es auf einem Gerät Anwendung verwende, wirft es mich nur einen Fehler. Hier sind die Details der Fehler:

System.Net.WebException wurde unbehandelt Message = "Konnte keine Verbindung zum Netzwerk herstellen." StackTrace: bei System.Net.HttpWebRequest.finishGetResponse() bei System.Net.HttpWebRequest.GetResponse() bei emulator2.Form1.button1_Click() bei System.Windows.Forms.Control.OnClick() bei System.Windows.Forms.Button.OnClick() bei System.Windows.Forms.ButtonBase.WnProc () bei System.Windows.Forms.Control._InternalWnProc() bei Microsoft.AGL.Forms.EVL.EnterMainLoop() bei System.Windows.Forms.Application.Run() bei emulator2.Program.Main()

Die Fehlerpunkte in dieser Zeile:

HttpWebResponse l_WebResponse = (HttpWebResponse) l_WebReq.GetResponse();

Hat jemand eine Idee, wie man das löst? Ich muss diese schnell real..so gelöst bekommen jede Hilfe gegeben wird sehr geschätzt! Vielen Dank!

Antwort

1

Meine Vermutung ist, dass der Emulator keine ordnungsgemäße Netzwerkkonnektivität hat. Es kann ein Schmerz sein (und ein Misserfolg nach meiner Erfahrung), dass ich mit den alten Windows Mobile-Emulatoren ein Netzwerk einrichten kann. (Es ist einfach in Windows Phone 7.)

lädt Internet Explorer und sehen, ob dass eine Verbindung mit dem gleichen URL machen ...

Außerdem sind Sie nicht von irgendwelchen Ihren Ressourcen Entsorgung (Und wenn dieser Code wirklich in einem Nachschlagewerk genau so ist, wie Sie es geschrieben haben, ist das eine deutliche schwarze Markierung gegen das Buch). Zum Beispiel sollten Sie die Web-Antwort werden Entsorgung:

using (HttpWebResponse response = ...) 
{ 
} 

Ebenso würde ich persönlich entsorgen Sie den Antwortstream und den Stromlesers, nur auf allgemeines Prinzip. I verdächtigen, dass, wenn die Antwort entsorgt wird, der Strom auch sein wird - aber es macht Sinn, alle Streams usw. zu entsorgen, es sei denn, Sie wissen, dass Sie sie unangeordnet lassen müssen.

+0

Ich verwende Windows Mobile 6 Professional als Emulator. Ich kann es nicht mit dem Netzwerk verbinden. irgendwelche Ideen? – strider

+0

@strider: Gehen Sie alle verschiedenen Verbindungseinstellungen durch, sowohl innerhalb von Windows Mobile selbst als auch in den Emulatoreinstellungen.Ich kann mich erinnern, dass es etwas ist, als würde man sagen, dass man seinen Standard-Netzwerkzugriff vom Computer aus verwenden soll, um ein NE2000 zu emulieren. Sie müssen dann eine Verbindung zum "Internet" im Emulator einrichten. Dies sind jedoch ziemlich dunkle und ferne Erinnerungen - Sie können vielleicht genauere Durchsuchungen mit einer Suche finden. Zumindest wissen Sie, dass Sie sich eine Weile nicht mehr um den Code kümmern müssen. –

0

Wenn Sie im Emulator ausgeführt werden, müssen Sie den Emulator "verankern" und dann eine Partnerschaft mit ActiveSync (Windows XP) oder Windows Mobile Device Center (Vista oder 7) erstellen.

Dadurch kann der Emulator die Netzwerkverbindung mit dem PC teilen. Sie müssen dies auch dann tun, wenn Sie eine Verbindung vom Emulator zum PC herstellen möchten.

Wie Jon erwähnt, müssen Sie in WP7 keine Verbindung auf diese Weise herstellen, der WP7-Emulator teilt automatisch die Netzwerkverbindung des Host-PCs.

Verwenden Sie IE Mobile (im Emulator), um zu überprüfen, ob das Gerät eine Verbindung mit der Site herstellen kann.

bearbeiten
den Emulator-to-Cradle, in VS2008 "Device Emulator Manager" wählen Sie aus dem Menü Extras. Wählen Sie den laufenden Emulator aus, klicken Sie mit der rechten Maustaste und wählen Sie "Cradle".

Das Mobile Device Center sollte automatisch starten und fragen, ob Sie eine Partnerschaft erstellen möchten, so als ob Sie ein echtes Gerät angeschlossen hätten.

+0

Ich verwende Windows 7. Wie docken Sie den Emulator an und erstellen Sie eine Partnerschaft mit Windows Mobile Device Center? – strider

+0

@strider Antwort aktualisiert, um Details zu enthalten, wie den Emulator "wiegen" –