Hallo,
habe mir folgendes Programmiert:
private static string UploadPicture(string pageURL, string picture_path)
{
System.Diagnostics.Debug.WriteLine("Calling URL:" + pageURL);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(pageURL);
HttpWebResponse response;
StreamReader sr;
string result = "";
//request.AllowAutoRedirect = false;
//request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
request.Method = "POST";
byte[] byteArray = PictureToByteArray(picture_path);
request.ContentType = "multipart/form-data";
request.ContentLength = byteArray.Length;
try
{
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
response = (HttpWebResponse)request.GetResponse();
sr = new StreamReader(response.GetResponseStream());
result = sr.ReadToEnd();
response.Close();
}
catch(Exception e){
System.Diagnostics.Debug.Write("Fehler:" + e.ToString());
}
System.Diagnostics.Debug.WriteLine("Response Upload:" + result);
return result;
}
Wie kann ich noch zwei sachen mitsenden mit dem POST Request?
also würde ich gerne ein "uid=2asdasd" mitsenden.
private static byte[] PictureToByteArray(string picture_path)
{
return File.ReadAllBytes(picture_path);
}
Unsere Website
iPhone Programmierung | Android Programmierung
Du hast mehrere Möglichkeiten, entweder gibst du die Parameter direkt mit in der Adresse an die du übergibs, also z.B.
google.de?param=value¶m2=value&uid=2asdasd
Wenn du jeweils unterschiedlich viele Parameter mit geben willst, empfiehlt es sich z.B. eine NameValueCollection oder ein Dictionary mit den Parametern und den entsprechenden Wrten zu übergeben.
Die musst du dementsprechend als bytes mit in den Request Stream schreiben.
Ich hab hier mal ein Beispiel, das ich verwende um unterschiedlich viele Parameter-Wertpaare mitzusenden.
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.ContentType = "multipart/form-data; boundary=" + boundary;
wr.Method = "POST";
wr.KeepAlive = true;
wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
Stream rs = wr.GetRequestStream();
string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
foreach (string key in nvc.Keys) //nvc ist vom Typ NameValueCollection
{
rs.Write(boundarybytes, 0, boundarybytes.Length);
string formitem = string.Format(formdataTemplate, key, nvc[key]);
byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
rs.Write(formitembytes, 0, formitembytes.Length);
}
rs.Write(boundarybytes, 0, boundarybytes.Length);
habe mir folgendes Programmiert
Die WebClient.UploadFile-Methode (System.Net) kennst du?
Wenn du einfach ein "uid=2asdasd" mitschicken möchtest, wäre das Einfachste, das einfach mit in die URL zu kodieren.
ja, aber geht das dann nicht als GET mit, wenn ich das mit ? dahinter schicke
Unsere Website
iPhone Programmierung | Android Programmierung
ja, aber geht das dann nicht als GET mit, wenn ich das mit ? dahinter schicke
Nein. Du hast für einen Request nur ein einziges HTTP-Verb. Und das ist in deinem Fall POST.
ja, aber geht das dann nicht als GET mit, wenn ich das mit ? dahinter schicke
Nein, weil du ja als Methode POST angibst, zur Unterscheidung lies vielleicht mal:
Unterschiede GET/POST (englisch)
Aber noch ein Hinweis:
Die WebClient.UploadFile-Methode (System.Net) kennst du?
Bei einfachen Dingen geht das, aber nicht bei komplexeren Forms mit mehreren Feldern.
Da hab ich schon mal mit rumexperimentiert.
Bei einfachen Dingen geht das, aber nicht bei komplexeren Forms mit mehreren Feldern.
Es soll ja auch nur ein Bild hochgeladen werden.