WebService в C# и.Net метод POST

Я понимаю, что я нуждаюсь в верительных грамотах и token, уже у меня есть они, также конфигурация HttpWebRequest (Get)

В момент делания POST я понимаю, что я должен делать один GET сначала, web service к которому я прибегаю, получи данные в json, json уже это у меня есть также.

Проблема состоит в том, что он посылает мне ошибку в этой линии

HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

Посылая следующую ошибку

System. Net. WebException: ' Ошибка на удаленном сервере: (400) неправильный Запрос.'

Которому проистекает это..., шел много пробуя

Это мой полный код

            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://mi pagina");

            httpWebRequest.ContentType = "application/json";

            httpWebRequest.Headers.Add("Authorization", "Token taltoken");
            httpWebRequest.Method = "POST";


            Vehiculo vehiculo = new Vehiculo
            {
                id= "14",
                created_at= "13-03-2019 17:17:03",
                vin = txt_VIN.Text,
                rfv= "0",
                model_year= 2012,
                type_vehicle= "1",
                type_service= "TAXI",
                class_vehicle= "1",
                mark = "SEAT",
                submark = "IBIZA_2.0L",
                num_motor = "9876",
                cilinders = 4,
                displacement = 1600,
                gas = "GASOLINA",
                status = "ACTIVE",
                invoce_value = 12000,
                vehicular_key = 11232,
                doors = 4
            };

            JavaScriptSerializer ser = new JavaScriptSerializer();

            string outputJSON = ser.Serialize(vehiculo);


            //En esta linea se queda
            HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse())
            {
                string result = new StreamReader(response.GetResponseStream()).ReadToEnd();
                MessageBox.Show(result);
            }
1
задан 16.03.2019, 00:50
1 ответ

в мое это оно я функционирует с C# и одним API, реализованным с PHP, если ты можешь приспосабливать это к твоей необходимости, я думаю, что не было бы много различие.

Это использовало, чтобы делать login с моей базой данных в MySQL.

, Чтобы последовательно преобразовывать, ты можешь использовать

  using Newtonsoft.Json;

и создаешь классы, чтобы получать ответ твоего request.

//clases
public class datosL
    {
        public string ID { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
    }
    public class RootObjectlist
    {
        public string resultado { get; set; }
        public datosL datos { get; set; }
        public string mensaje { get; set; }
    }

ты можешь помещать Это в какое-то событие твоей кнопки

            string juser = user;
            string jpass = pass;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www");
            req.KeepAlive = true;
            req.Method = "POST";
            string Data = "id=" + juser + "&pass=" + jpass;//aqui poner tu objeto serializado con las variables que se recibiran en el WS
            byte[] postBytes = Encoding.UTF8.GetBytes(Data);
            // req.Headers = "application/json";
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = postBytes.Length;
            Stream requestStream = req.GetRequestStream();
            requestStream.Write(postBytes, 0, postBytes.Length);
            requestStream.Close();
            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
            Stream resStream = response.GetResponseStream();
            var sr = new StreamReader(response.GetResponseStream());
            string responseText = sr.ReadToEnd();
            var msjdes = JsonConvert.DeserializeObject<RootObjectlist>(responseText);

            string mjsserver = msjdes.resultado;
            string msjservernot = msjdes.mensaje;
            if (mjsserver == "OK")
            {
                string usuario = msjdes.datos.Username;
                string password = msjdes.datos.Password;

                if (textBox1.Text == usuario && textBox2.Text == password)
                {
                    NameUserGlobal = usuario;

                }
                else
                {
                    MessageBox.Show("El Usuario o Password estan incorrectos");
                }
            }
            else
            {
                MessageBox.Show(msjservernot,"Información incorrecta");

            }

я не уверен, лучший способ ли это делать это, но в меня оно я функционирует, пытается и ты комментируешь мне.

0
ответ дан 02.12.2019, 05:34