C# Post request

194
25 сентября 2018, 23:10

Необходимо отправить POST запросом XML файл. При получении ответа получаю ошибку java.Lang.NullPointerException. Сначала в XML файле содержались ошибки, сейчас ошибки поправили. Файл должен быть в кодировке windows-1251 и содержать шапку. Совместно с тех.поддержкой выяснили, что запрос приходит пустой. Подскажите пожалуйста, что надо сделать чтобы запрос пришел не пустой?

Вот код моей программы:

namespace ConsoleApp3
{
class Program
{
    public static byte[] ReadFully(Stream input)
    {
        using (MemoryStream rms = new MemoryStream())
        {
            input.CopyTo(rms);
            return rms.ToArray();
        }
    }
    static void Main(string[] args)
    {

        XDocument xdoc = new XDocument(
        new XDeclaration("1.0", "Windows-1251","yes"),
        new XElement("product",
            new XElement ("prequest",
            new XElement("req",
            new XElement("AddressReq",
                new XElement("houseNumber", "1"),
                new XElement ("street","Го"),
                new XElement("apartment", "38"),
                new XElement("city", "Магадан"),
                new XElement("postal", "685"),
                new XElement("addressType", "1")),
            new XElement("AddressReq",
                new XElement("houseNumber", "1"),
                new XElement("street", "Го"),
                new XElement("apartment", "38"),
                new XElement("city", "Магадан"),
                new XElement("postal", "685"),
                new XElement("addressType", "1")),
            new XElement("IdReq",
                new XElement("idNum", "273"),
                new XElement("idType","21"),
                new XElement("seriesNumber", "64"),
                new XElement("issueCountry", "г. Магадан"),
                new XElement("issueDate", "2006-03-18"),
                new XElement("issueAuthority", "ОВД")
            ),
            new XElement("IdReq",
                new XElement("idNum", "12345678901"),
                new XElement("idType", "32")
            ),
            new XElement("InquiryReq",
                new XElement("ConsentReq",
                    new XElement("consentFlag", "Y"),
                    new XElement("consentDate", "2016-01-20"),
                    new XElement("consentExpireDate", "2021-10-21"),
                     new XElement("consentPurpose", "4"),
                    new XElement("otherConsentPurpose", "Job pre-screening"),
                    new XElement("reportUser", "DG Human Resources Incorporated"),
                    new XElement("liability", "Y")
                ),
                 new XElement("inqPurpose", "01"),
                 new XElement("inqAmount", "10000"),
                 new XElement("currencyCode", "usd")
            ),
             new XElement("PersonReq",
                new XElement("name1", "К"),
                new XElement("first", "Г"),
                new XElement("paternal", "Г"),
                new XElement("gender", "1"),
                new XElement("birthDt", "1946-07-06"),
                new XElement("placeOfBirth", "Москва")
            ),
             new XElement("RequestorReq",
                new XElement("MemberCode", "code"),
                new XElement("UserID", "user"),
                new XElement("Password", "pass")
            ),
             new XElement("RefReq",
                new XElement("product", "CHST")
            ),
             new XElement("IOType","B2B"),
             new XElement("OutputFormat", "xml"),
             new XElement("lang", "ru")
            ))               
            ));
        MemoryStream stream = new MemoryStream();
        xdoc.Save(stream);

        WebRequest request = WebRequest.Create("MyUrl");
        var byteArray = ReadFully(stream);
        request.Method = "POST";
        request.ContentType = "text/xml";
        request.ContentLength = byteArray.Length;
        Stream data = request.GetRequestStream();
        data.Write(byteArray, 0, byteArray.Length);
        data.Close();
        Console.WriteLine("Нажмите клавишу чтобы получить ответ");
        Console.ReadKey();

        WebResponse response = request.GetResponse();
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        data = response.GetResponseStream();
        StreamReader reader = new StreamReader(data);
        string responseFromServer = reader.ReadToEnd();
        Console.WriteLine(responseFromServer);
        reader.Close();
        data.Close();
        response.Close();
        Console.ReadKey();
    }
}

}

Answer 1

Вы и так записали в стрим вот здесь данные

xdoc.Save(stream);

Но, как я понял, вы не двигаете записанный стрим в начало перед чтением

xdoc.Save(stream);
stream.Position = 0;
READ ALSO
Вывод данных из MySQL по категориям

Вывод данных из MySQL по категориям

Есть база данных, в ней 2 таблицы(category_sklad состоящая из id name и products_sklad состоящая из id name kolvo category_id)Собственно вот что планируется сделать, например...

185
Что означает запись в error log?

Что означает запись в error log?

Всем привет! Отлавливаю ошибку wordpress + ubuntu 1604 , apache2

166
Laravel 5.4 ошибка при создании фасада

Laravel 5.4 ошибка при создании фасада

Laravel 54 ошибка при создании фасада

150
Генерация кода по заданной структуре JSON API

Генерация кода по заданной структуре JSON API

Я не уверен, отностися ли это полностью к SuiteCRM или к JSON APIВероятно, это что-то посередине

136