Выполнение запроса POST с помощью XMLBody и действия в Content-Type в C # [дубликат]

27
задан AlliterativeAlice 18 July 2013 в 23:21
поделиться

2 ответа

В целом:

Примером простого способа размещения XML-данных и получения ответа (как строки) была бы следующая функция:

public string postXMLData(string destinationUrl, string requestXml)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destinationUrl);
    byte[] bytes;
    bytes = System.Text.Encoding.ASCII.GetBytes(requestXml);
    request.ContentType = "text/xml; encoding='utf-8'";
    request.ContentLength = bytes.Length;
    request.Method = "POST";
    Stream requestStream = request.GetRequestStream();
    requestStream.Write(bytes, 0, bytes.Length);
    requestStream.Close();
    HttpWebResponse response;
    response = (HttpWebResponse)request.GetResponse();
    if (response.StatusCode == HttpStatusCode.OK)
    {
        Stream responseStream = response.GetResponseStream();
        string responseStr = new StreamReader(responseStream).ReadToEnd();
        return responseStr;
    }
    return null;
}

В вашем конкретная ситуация:

Вместо:

request.ContentType = "application/x-www-form-urlencoded";

use:

request.ContentType = "text/xml; encoding='utf-8'";

Также удалите:

string postData = "XMLData=" + Sendingxml;

И замените:

byte[] byteArray = Encoding.UTF8.GetBytes(postData);

на:

byte[] byteArray = Encoding.UTF8.GetBytes(Sendingxml.ToString());
75
ответ дан AlliterativeAlice 15 August 2018 в 16:42
поделиться
  • 1
    Спасибо, но как насчет этих двух строк, строка postData = & quot; XMLData = & quot; + Sendingxml; byte [] byteArray = Encoding.UTF8.GetBytes (postData); Я устал иметь postData как XDocument, потому что мне нужно отправить XMLData как XML-формат, а не строку. – Alma 8 July 2013 в 22:14
  • 2
    Извини за это. Я обновил свой ответ с помощью более полного решения. – AlliterativeAlice 8 July 2013 в 22:25
  • 3
    Спасибо, я заменил все, что вы сказали здесь, но все же он даже не перенаправляет URL. – Alma 8 July 2013 в 23:51
  • 4
    Вы уверены, что проблема связана с тем, как данные POSTED, а не сами данные или что-то еще? Для справки, вот фрагмент кода, который я лично использую для данных XML POST для XML-API Youtube, и который я знаю для работы: pastebin.com/EGmeB05J – AlliterativeAlice 9 July 2013 в 15:33
  • 5
    пожалуйста, скажите мне, какой пользователь lib для этого кода? Есть ли зависимость от maven? – Thilina Sampath 2 October 2015 в 06:42

Пример AlliterativeAlice очень помог мне. В моем случае, однако, сервер, с которым я разговаривал, не любил иметь одинарные кавычки вокруг utf-8 в типе контента. Он потерпел неудачу с общим "Server Error", и потребовалось несколько часов, чтобы выяснить, что ему не понравилось:

request.ContentType = "text/xml; encoding=utf-8";
3
ответ дан Rarepuppers 15 August 2018 в 16:42
поделиться
  • 1
    Спасибо! У меня была такая же проблема. Удалены тики и все хорошее. – Keith 28 February 2018 в 17:07
Другие вопросы по тегам:

Похожие вопросы: