2017-06-21 2 views
0

Je tente de faire une demande POST à ​​un serveur. Les travaux suivants quand je CURL en utilisant Bash git:Demande CURL POST au serveur en C# HttpWebRequest

curl -X POST -H "Content-Type: application/octet-stream" -H "User-Agent: MyUserAgent" --data-binary @MyDocument.xlsx http://myUrl.com 

Je sais que je peux faire des requêtes POST en utilisant JSON comme suit (en C#):

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUrl); 
request.Method = "POST"; 
request.ContentType = "application/json"; 
request.Accept = "application/json"; 
request.UserAgent = myUserAgent; 
using (var stream = await request.GetRequestStreamAsync()) 
{ 
    using (StreamWriter streamWriter = new StreamWriter(stream)) 
    { 
     streamWriter.Write(myJsonData); 
    } 
} 
using (HttpWebResponse webResponse = (HttpWebResponse) await request.GetResponseAsync()) 
{ 
    using (StreamReader reader = new StreamReader(webResponse.GetResponseStream())) 
    { 
     string response = reader.ReadToEnd(); 
     //do stuff with response 
    } 
} 

Ma difficulté est de combiner essentiellement les deux. Je sais que je dois changer le request.ContentType à "application/octet-stream", mais ce n'est pas suffisant. Comment puis-je incorporer le "--data-binary @ MyDocument.xlsx" dans le HttpWebRequest? Quelqu'un a des idées? Merci!

Répondre

0

Je vous suggère de regarder dans WebClient car il est plus facile à mettre en œuvre:

WebClient client = new WebClient(); 
byte[] response = client.UploadFile(myUrl,fileName);