Я пытаюсь отправить закодированные данные сообщения (application / x-www-form-urlencoded) на мой запрос Restsharp, но получаю сообщение об ошибке неверного запроса - PullRequest
0 голосов
/ 19 апреля 2019

Мой метод запроса: сообщение

Content-type : application/x-www-form-urlencoded,
using  HttpUtility.UrlEncode(RequestBody);

У меня возникла проблема, поскольку я преобразовываю свое тело Json в UrlEncode, по этой причине я отправляю в качестве сообщения в мой запрос RestSharp, как показано ниже.

\\Request Model
public class Request
    { 
        public string MessageId { get; set; }
        public bool IsOffline { get; set; }
        public string LanguageCode { get; set; }
        public string MessageType { get; set; }
    }
\\xUnit 
[Fact]
        public void Login()
        {

            Request request = new Request
            {
                MessageId = Guid.NewGuid().ToString(),
                MessageType = "KioskLogin",
                IsOffline = false,
                LanguageCode = "en"
            };
            String RequestBody = JsonConvert.SerializeObject(request);

            //url encode the json
            var payload = String.Format("payload={0}", HttpUtility.UrlEncode(RequestBody));

            IRestResponse response = _restServices.PostRequest(payload);

            Response parsedResponse = JsonConvert.DeserializeObject<Response>(response.Content);

            response.StatusCode.Should().Be(HttpStatusCode.OK);
\\I Builded this RestSharp code Like
    public IRestResponse PostRequest(String Request)
        {
            var restClient = new RestClient(ConfigurationReader.Get("Environment:QA:Endpoint"));
            var request = new RestRequest(Method.POST);

            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            request.AddJsonBody(payload);

            IRestResponse response = restClient.Execute(request);
            return response;
        }

Я могу отправить запрос в кодированной форме URLE, используя HttpUtility.UrlEncode(RequestBody), но у меня есть проблема здесь, в моем запросе я вижу, как "payload=%7B%0A%22MessageId%22%3A%20%222e55dcdf-d877-4970-870e-fef841aff9a1%22%2C%0A%09%22MessageType%22%3A%20%22Login%22%2C%0A%22IsOffline%22%3A%20false%2C%0A%09%22LanguageCode%22%3A%20%22es%22%0A%7D"

НоМне не нужно, чтобы это было в "" Мне нужно, чтобы это было так payload=%7B%0A%22MessageId%22%3A%20%222e55dcdf-d877-4970-870e-fef841aff9a1%22%2C%0A%09%22MessageType%22%3A%20%22Login%22%2C%0A%22IsOffline%22%3A%20false%2C%0A%09%22LanguageCode%22%3A%20%22es%22%0A%7D Если это так, тогда я получу ответ правильно.

1 Ответ

0 голосов
/ 23 апреля 2019

Я получаю ответ об успешном выполнении, когда я отправляю тело запроса в request.AddParameter("Payload", payload, ParameterType.RequestBody);, в котором оно отправлено request.AddJsonBody(payload);.

...