2014-09-04 1 views
0

У меня есть запрос HTML POST, который мне нужно скопировать в C#Проблемы с MULTIPART/Form-Data в качестве веб-запроса

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

+0

req.ContentType = "multipart/form-data"; Измените это на req.ContentType = "multipart/mixed; border = \" border \ "" –