Запрос метода JSON WebAPI с ошибкой 400 ошибочных запросов - PullRequest
0 голосов
/ 01 июля 2019

Я новичок в ASP .net.Я пытаюсь попасть в веб-сервис.Тип запроса GET.Использование метода POST и тип контента JSON.Я использовал онлайн-код и попытался запустить.Это всегда оказывается плохим запросом 400.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;

namespace TestSuit_Get
{
    class Program
    {
        private const string URL = "http://10.33.20.54:8111/ucpData/customer/v1/getCustomer";

        private const string DATA = @"{""header"":{ ""messageId"":""123""},""body"":{ ""requestEntity"":{""productCode"":""002"", ""customerReferenceNumber"": 4010021421 }}}";
        static void Main(string[] args)
        {
            Program.CreateObject();
        }

        private static void CreateObject()
        {

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
            request.Method = "POST";
            request.ContentType = "application/json";
           // request.ContentLength = DATA.Length;
            using (Stream webStream = request.GetRequestStream())
            using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII))
            {

                JavaScriptSerializer json_serializer = new JavaScriptSerializer();
                Object routes_list =
                     json_serializer.DeserializeObject(DATA);
                requestWriter.Write(routes_list);
            }

            try
            {
                WebResponse webResponse = request.GetResponse();
                using (Stream webStream = webResponse.GetResponseStream() ?? Stream.Null)
                using (StreamReader responseReader = new StreamReader(webStream))
                {
                    string response = responseReader.ReadToEnd();
                    Console.Out.WriteLine(response);
                }
            }
            catch (Exception e)
            {
                Console.Out.WriteLine("-----------------");
                Console.Out.WriteLine(e.Message);
            }

        }
    }
}

Пожалуйста, помогите мне заставить его работать.Следующим шагом было бы вместо этого передать этот запрос вручную, я должен был бы передать значения динамически с тем же шаблоном и получить результаты всех запросов GET.

1 Ответ

1 голос
/ 01 июля 2019

Не используйте древние HttpWebRequest, используйте HttpClient. Кроме того, если веб-служба возвращает неожиданные ответы, используйте инструмент отладки, например Fiddler, для проверки того, что именно вы отправляете и получаете.

В этом случае ваш requestWriter.Write(routes_list) будет буквально записывать строку System.Object в поток запросов, а это не то, что вам нужно. У вас уже есть строка JSON, которую вы хотите отправить, поэтому зачем десериализовать ее в объект, который вы хотите отправить?

Просто отправьте строку:

requestWriter.Write(DATA);

И снова, код может быть значительно упрощен с помощью HttpClient .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...