2014-09-04 14 views
0

我有一個HTML POST請求,我需要在C#麻煩用的multipart/form-data的作爲Web請求

的HTML複製是一樣的東西

<FORM action="http://RemoteServerURL" enctype="multipart/form-data" method=POST> 
    <TEXTAREA id="TextAreaXML" name="xmlmsg" rows="20" cols="100"> </TEXTAREA> 
    <button type="submit">Send</button> 
</form> 

的文本區域期待一個INOUT這是如下

<?xml version="1.0" encoding="utf-8"?> 
<OnlineCheck> 
    <Header> 
    <BuyerAccountId>XXXXXX</BuyerAccountId> 
    <AuthCode>XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</AuthCode> 
    <Type>STOCK</Type> 
    </Header> 
    <Item line="1"> 
    <ManufacturerItemIdentifier /> 
    <DistributorItemIdentifier>3109750</DistributorItemIdentifier> 
    <Quantity>7</Quantity> 
    </Item> 
</OnlineCheck> 

這部分工作正常。

現在我試圖在c#中複製它,如下所示。

WebRequest req = WebRequest.Create("http://RemoteServerURL"); 
string xmlmsg = "<?xml version=" + '"' + "1.0" + '"' + " encoding==" + '"' + "utf-8" + '"' + "?><OnlineCheck><Header><BuyerAccountId>XXXXXX</BuyerAccountId><AuthCode>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX</AuthCode><Type>STOCK</Type></Header><Item line=" + '"' + "1" + '"' + "><ManufacturerItemIdentifier /><DistributorItemIdentifier>3109750</DistributorItemIdentifier><Quantity>7</Quantity></Item></OnlineCheck>"; 

byte[] send = Encoding.Default.GetBytes(xmlmsg); 
req.Method = "POST"; 
req.ContentType = "multipart/form-data"; 
req.ContentLength = send.Length; 

Stream sout = req.GetRequestStream(); 
sout.Write(send, 0, send.Length); 
sout.Flush(); 
sout.Close(); 

WebResponse res = req.GetResponse(); 
StreamReader sr = new StreamReader(res.GetResponseStream()); 
string returnvalue = sr.ReadToEnd(); 

這失敗,我得到的消息

「的請求被拒絕,因爲沒有多邊界發現XML 請求」

。所以我知道對服務器的請求正在工作。但是輸入或者出錯了。請幫助

回答

0

擺脫sout.Flush();,這是沒有必要的。

0

看來錯誤信息很明顯,它要求多部分邊界。 內容類型:multipart/mixed;邊界=「邊界」

What is the boundary parameter in an HTTP multi-part (POST) Request?

+0

是的,信息是清楚的。但是我在代碼中做了什麼改變來糾正? – MarsOne 2014-09-04 14:07:59

+0

req.ContentType =「multipart/form-data」;將其更改爲req.ContentType =「multipart/mixed; boundary = \」boundary \「」 – 2014-09-04 14:09:09