2015-10-13 41 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

相关问题