2012-05-21 1 views
1

Это тупо тривиальный вопрос, но я не могу найти подходящий пример где-либо с более чем одним установленным свойством. В основном, я пытаюсь отправить запрос POST с библиотекой HTTPWebRequest C#, указав два разных поля в теле запроса.Форматирование тела HTTPWebRequest

До сих пор у меня есть это:

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
request.Method = "POST"; 
ASCIIEncoding encoding = new ASCIIEncoding(); 
byte[] byt = encoding.GetBytes("recipient=12345ABC"); 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = byt.Length; 
Stream newStream = request.GetRequestStream(); 
newStream.Write(byt, 0, byt.Length); 

Вслед за вещи обычно GetResponse(). Это работает отлично, денди все, что, но я не могу понять, как определить несколько элементов кузова, такие как оба эти:

recipient=12345ABC 
body="testmessage" 

Я попытался отделяя их точкой с запятой, амперсандом и запятая , но сервер продолжает возвращать Error 400: Bad Request. Возможно, я просто не понимаю, как этот процесс работает?

+0

Вы должны иметь возможность разделить их с амперсандом («&») так же, как и для запроса GET в строке запроса (например, «recipient = 12345ABC & body = testmessage»). Возможно, вам придется URLEncode ваш 'body', если он содержит специальные символы. –

+0

Он все еще дает мне плохой запрос ответа, к сожалению. Я также попытался переместить параметры из тела непосредственно на сам URL и добавить его, но он все равно не нравится. Следует отметить, что они указывают параметр «получатели» и «текст»; в примере, который они приводят, они фактически не говорят «text = blah» - они просто добавляют «& blah» после «recipients = 12345ABC». Является ли это своего рода ярлыком или это указывает на то, чего я не хватает? (Edit: By «they» Я имею в виду авторов API) – sichinumi

+0

^Еще одна вещь, которую нужно добавить: пример JSON, который они дают, использует «body = blah» в отличие от «text = blah», хотя имя параметра, которое они предоставляют, "текст." – sichinumi

ответ

1

Документы API были sloppily сделаны. Фактическими именами параметров были «получатели» и «текст» - код работал после этого изменения.

URL-кодирование в теле отлично работает, «получатели = 12345ABC & текст = этот + + URL + экранированный + текст» работал как очарование либо самого URL-адреса, либо тела POST.

Смежные вопросы