Frage

Ich versuche, eine einfache HTTP, um eine Endpunkt mit nur URL-Argumenten posten.

Mindestens das ist, wie ich die folgenden Anweisungen verstehen:

  

POST an diese Adresse mit einem einzigen Parameter namens url, die Adresse des Feeds, die sich geändert.

     

Wie bei der XML-RPC-Methode, überprüft es, dass das Futter verändert hat, und wenn ja, benachrichtigt er die Abonnenten.

     

Das Ereignis wird protokolliert. Der Rückgabewert wird eine XML-Nachricht Ergebnis genannt, mit zwei Attributen, Erfolg und msg.

Das ist mein Code zur Zeit:

        public static void ping(string feed)
    {
        HttpWebResponse response = MakeRequest(feed);
        XmlDocument document = new XmlDocument();

        document.Load(response.GetResponseStream();
        string success = document.GetElementById("success").InnerText;
        string msg = document.GetElementById("msg").InnerText;

        MessageBox.Show(msg, success);
    }
        private static HttpWebResponse MakeRequest( string postArgument)
    {
        string url = path + "?" + UrlEncode(postArgument);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        return (HttpWebResponse)request.GetResponse();
    }
    private static string UrlEncode( string value)
    {
        string result;
        result= HttpUtility.UrlEncode("url") + "=" + HttpUtility.UrlEncode(value);
        return result;
    }

Ich erhalte eine falsche Antwort vom Server, so dass ich davon ausgehen, ich tue es irgendwie falsch. hier ist die Antwort:

  

Ungültige auf der obersten Ebene des Dokuments. Fehler bei der Verarbeitung Ressource ‚file: /// C: /Users/ADMIN/AppData/Local/Temp/VSD1.tmp.XML ...

     

rue   ^

Irgendwelche Ideen ??

Vielen Dank im Voraus

War es hilfreich?

Lösung 3

Hier ist der Code, den ich gefunden habe, zu arbeiten.

Wir verwenden eine HTTP POST, Codierparameter im Körper des Stroms. Dies gibt uns „url-foobar“ als Inhalt Körper. Keine Inhaltstypen, Dispositionen, Grenzen, usw. im Körper.

        private static HttpWebResponse MakeRequest(string path, string postArgument)
    {
        //string url = path + "?" + UrlEncode(postArgument);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);

        request.Method = "POST";
        string boundary = Guid.NewGuid().ToString().Replace("-", "");
        request.ContentType = "multipart/form-data; boundary=" + boundary;
        Stream stream = request.GetRequestStream();
        string result = string.Format("url={0}", postArgument);
        byte[] value = Encoding.UTF8.GetBytes(result);
        stream.Write(value, 0, value.Length);
        stream.Close();

        return (HttpWebResponse)request.GetResponse();
    }
        public static void ping(string server, string feed)
    {
        HttpWebResponse response = MakeRequest(server, feed);
        XmlDocument document = new XmlDocument();
        string result = GetString(response.GetResponseStream());
        try
        {
            document.LoadXml(result);
        }
        catch
        {
            MessageBox.Show("There was an error with the response", "Error");
        }
        //MessageBox.Show(msg, success);

    }
    public static string GetString(Stream thestream)
    {
        int n = thestream.ReadByte();
        byte[] bytes = new byte[n];
        thestream.Read(bytes, 0, n);
        return Encoding.ASCII.GetString(bytes);
    }

Die Aufrufe von GetString sind für Debugging-Zwecke und sind nicht unbedingt erforderlich.

Vielen Dank für alle, die bringen mich auf dem richtigen Weg in hier läuteten.

Andere Tipps

Ich weiß nicht, die API von .NET, aber: ich die Anweisungen verstehe als:. „Ausführen, um einen Beitrag über die URL mit der Abfrage Argumenten“ und die Poststelle sollte url = foobar Parameter hat

IOW: anstatt die postArgument nehmen und hängen Sie ihn an die URL, sollen Sie die URL aufzurufen und die richtig codiert url = foobar im Nachrichtentext bereitstellen

.

Außerdem:. Ich sehe nicht, dass Sie die Anfrage Einstellung ‚Annehmen‘ Header, der wichtig sein kann, wenn der Server, dass verwendet, um zu erkennen, welches Format mit reagieren

Der beste Weg, ein Formular Post in .NET zu tun ist, um die WebClient-Klasse zu verwenden. Diese Klasse wird die richtige Sache zu tun, die Daten zu senden, entweder als POST (mit Parametern in Entitätskörpers) oder als GET (mit Parametern als Query-String-Argumente codieren).

Und müssen Sie uns die eigentliche Ausnahme zeigen, dass der Kunde wieder schenkt, um herauszufinden, was falsch ist ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top