C# HttpWebRequest API Aufruf

D

Donnidonis

Gast
Hey Leute,
Ich hab ein kleines Problemchen. Bin im Moment dabei mir ein Programm zu schreiben, welches auf die Share-Online.biz API zugreifen soll. Hier mal der Link zur Linkcheck-API: API

Mein Problem besteht darin, dass meine Upload ID's nicht übertragen werden..
Ich bekomme immer die Meldung, "** NO UPLOAD IDS FOUND **".
Hier mal mein Code:
Code:
private void button1_Click(object sender, EventArgs e)
        {
            // REQUEST
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://api.share-online.biz/linkcheck.php");
            request.Method = "POST";

            byte[] data = Encoding.ASCII.GetBytes("07LZU12G89");
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
            Stream requeststream = request.GetRequestStream();
            requeststream.Write(data, 0, data.Length);

            requeststream.Close();

            //RESPONSE
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responsestream = response.GetResponseStream();
            StreamReader sr = new StreamReader(responsestream, Encoding.Default);
            MessageBox.Show(sr.ReadToEnd());
        }

Oder geh ich die Sache generell falsch an..?

Liebe Grüße
 
Mh wo genau liegt denn dann der unterschied der beiden?
Und wie genau muss ich die Aufrufen?
 
// Übergabeparameter in der URL
GET: http://xyz.de/?test=hallo

// Übergabeparamter im Requestheader
POST: http://xyz.de , im Requestheader entsprechend Name und Wert, quasi test=hallo

Wie das letztendlich in C# funktioniert, musst Du selber recherieren. Am einfachsten ist die GET-Variante, da Du keinen Header konfigurieren musst.

Unter Python würde ich es so machen:

Code:
id = "07LZU12G89"
response = urllib2.urlopen("http://api.share-online.biz/linkcheck.php?link=" + id)
html = response.read()
print(html)

Ausgabe:
Code:
07LZU12G89;NOTFOUND;
 
Zuletzt bearbeitet:
Hey,

Ersetz einfach diese Zeile:

Code:
byte[] data = Encoding.ASCII.GetBytes("07LZU12G89");

mit dieser:

Code:
byte[] data = Encoding.ASCII.GetBytes("links=07LZU12G89");

wobei es deine Datei nicht gibt, lade eine neue hoch, und es geht. Hier z.B.:

http://api.share-online.biz/linkcheck.php?links=Z4CW76DME53T

Und falls du GET nehmen möchtest, hier:

Code:
private string GETrequest(string URL)
        {
            try
            {
                using (var client = new WebClient())
                {
                    string result = client.DownloadString(URL);
                    return result;
                }
            }
            catch (WebException)
            {
                Debug.Print("The URL: " + URL + " is not reachable!");
                return "";
            }
        }
 
Zuletzt bearbeitet:
Vielen Dank ;)
Jetzt hab ich verstanden wie es funktioniert mit beiden Methoden :)
Ja die Datei war offline, weil ich einfach die aus dem Beispiel genommen habe ;D

Jetzt hab ich noch eine weitere Frage:
Wenn man sich die Upload API anschaut (Upload API).
Da muss ich beim Request ja 2 Variablen angeben, einmal username und einmal Passwort.
Wie genau mach ich das dann? Wie muss ich die bei der Übertragung trennen?
 
Getrennt wird mit einem "&"
Evtl. solltest Dir mal das HTTP-Protokoll genauer anschauen: http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol

Hinweis: Hier ist die POST-Methode etwas sicherer, da die User-Credentials nicht in der URL auftauchen (Stichwort Logging). Aber insgesamt ist es keine schöne Variante, da ein Angreifer relativ einfach an die POST-Paramter kommen kann.
 
Zuletzt bearbeitet:
Zurück
Oben