2015-10-13 58 views
1

我想發送和http發佈請求在控制檯應用程序與數組如果字符串正文中,但它不工作。如何發送與正文中的字符串陣列的發佈請求

下面是代碼:

WebRequest request = WebRequest.Create(Url); 
request.Method = "POST"; 
request.ContentType = "application/json;charset=UTF-8"; 
string[] firstData = { "89", "354", "AF001" }; 
StreamWriter requestWriter = new StreamWriter(request.GetRequestStream()); 
requestWriter.Write(firstData); 
requestWriter.Close(); 

string[] secondData = { "8911", "354", "01" };; 
StreamWriter requestWriter2 = new StreamWriter(request.GetRequestStream()); 
requestWriter2.Write(secondData); 
requestWriter2.Close(); 
+0

*它不工作*是什麼意思?什麼不工作。 –

+0

不發送請求並拋出一個異常,持續發生異常 – EnderCode

+0

它拋出StreamWriter requestWriter2 = new StreamWriter(request.GetRequestStream()); – EnderCode

回答

1

您不能重新使用相同的WebRequest流兩次,呼籲雙方StreamWriter實例request.GetRequestStream時你在幹什麼。這就是爲什麼它拋出異常。我不知道爲什麼你會收到兩次請求流,每次都要到不同的StreamWriter。你可以簡單地將它們合併到一個:

WebRequest request = WebRequest.Create(Url); 
request.Method = "POST"; 
request.ContentType = "application/json;charset=UTF-8"; 

using (StreamWriter requestWriter = new StreamWriter(request.GetRequestStream())) 
{ 
    string[] firstData = { "89", "354", "AF001" }; 
    requestWriter.Write(firstData); 

    string[] secondData = { "8911", "354", "01" }; ; 
    requestWriter.Write(secondData); 
} 

作爲一個側面說明,您可以使用WebClient大大降低代碼的verbosiness:

using (var webClient = new WebClient()) 
{ 
    webClient.Headers[HttpRequestHeader.ContentType] = "application/json"; 
    webClient.UploadData(Url, Encoding.UTF8.GetBytes(firstData)); 
    webClient.UploadData(Url, Encoding.UTF8.GetBytes(secondData)); 
} 
+0

Encoding.UTF8.GetBytes(firstData)是char []而不是字符串[] – EnderCode

+0

第一個停止拋出異常,但仍似乎沒有發送請求不知道... – EnderCode

+0

你確定這是發送字符串數組的正確方法嗎?這是我的主要問題,如何使用WebRequest發送字符串數組 – EnderCode

0

我改變string[]var和它的工作:

WebRequest request = WebRequest.Create(apiUrl); 
request.Method = "POST"; 
request.ContentType = "application/json;charset=UTF-8"; 

data = "[ \"89\", \"354\", \"AF001\" ]"; 

StreamWriter requestWriter = new StreamWriter(request.GetRequestStream()); 

requestWriter.Write(data); 

requestWriter.Close(); 



    WebResponse response = request.GetResponse(); 
    Console.WriteLine(((HttpWebResponse)response).StatusDescription); 

    response.Close(); 

    request = WebRequest.Create(url); 
    request.Method = "POST"; 
    request.ContentType = "application/json;charset=UTF-8"; 


    StreamWriter requestWriter2 = new StreamWriter(request.GetRequestStream()) 

    var data2 = ""[ \"55\", \"3524\", \"b01\" ]"; 

    requestWriter2.Write(data2); 
    requestWriter2.Close(); 

    WebResponse response2 = request.GetResponse() 
    Console.WriteLine(((HttpWebResponse)response2).StatusDescription); 

爲第二個請求創建新的WebResponse和StreamWriter

相關問題