Halo untuk semua orang di luar sana.

Saya mengalami masalah berikutnya. Saya mencoba melakukan permintaan POST tetapi ketika saya mengkompilasi dan menjalankannya dengan debugger dari Visual Studio Code, saya mendapatkan kesalahan 400 Permintaan Buruk. Terlepas dari itu, ketika saya melakukan permintaan POST yang sama di Postman, saya mendapatkan permintaan status 200 OK dengan semua nilai yang saya perlukan untuk melanjutkan ke bagian berikutnya yang sedang saya kerjakan. masukkan deskripsi gambar di sini

enter image description here

Jika ada yang memiliki petunjuk tentang bagaimana menangani ini, itu akan sangat dihargai. Saya akan terus mencoba kombinasi tentang cara mengatasi dengan alternatif pada masalah ini. *Meskipun ada modifikasi, saya masih mengalami masalah yang sama. Saya membuat serial objek dan saya mendapatkannya seperti yang saya butuhkan. Tapi, setiap kali datang ke permintaan, itu memberi saya 400 Permintaan Buruk.

Salam kenal dan terima kasih

0
Oris Sin 22 Desember 2020, 16:34

3 jawaban

Jawaban Terbaik

Jawabannya ada di sini. Konstruksi header Basic Auth sudah salah sejak awal. Untuk menyandikannya, saya harus meneruskannya seperti ini new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); dan oleh karena itu ke permintaan. Saya juga mengganti PostAsJsonAsync dengan PostAsync. Ini bekerja seperti pesona! Akhirnya, saya mendapatkan kode status 200 OK dengan data yang harus saya berikan ke tampilan saya.

public async Task<string> CreateUser(string conf, string userId, string sexo, string deviceId)
        {
            var sexoStr = "";  
            if(sexo == "MALE") {
                sexoStr = "MALE";
            } else if(sexo == "FEMALE") {
                sexoStr = "FEMALE";
            }

            var guid = Guid.NewGuid().ToString(); // guid para el username y el password
            var data = new patientMediktor();
            data.deviceId = userId;
            data.deviceType = "WEB";
            data.apiVersion = "4.0.3";
            data.language = "es_ES";
            data.externUser = new patientMediktor.externUserClass(userId, guid, guid, sexoStr); // extern user
            data.includeAuthToken = true;

            string json = JsonConvert.SerializeObject(data);
            var Client =  new HttpClient();
            var prueba = "https://xxxxxx.com:443/";
            Client.BaseAddress = new Uri(prueba);

            var byteArray = Encoding.ASCII.GetBytes("xxxxxxxx:xxxxxxxxx");
            Client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
            var response = Client.PostAsync("backoffice/services/externUser", new StringContent(json, Encoding.UTF8, "application/json")).Result;

            response.EnsureSuccessStatusCode();
            var respuesta = await response.Content.ReadAsStringAsync();
            return respuesta;
   }
0
Oris Sin 23 Desember 2020, 10:42

Sepertinya Anda harus menghapus koma di akhir baris berikut:

sexoStr = "\"gender\": \"MALE\",";
...
sexoStr = "\"gender\": \"FEMALE\",";

Secara umum, lebih suka bekerja dengan kelas model dan membuat serial (menggunakan Newtonsoft.Json (contoh) atau System.Text.Json), bukan string yang di-hardcode.

1
OfirD 22 Desember 2020, 14:26

Coba dengan PostAsync alih-alih 'PostAsJsonAsync'

Var konten = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "aplikasi/json");

Var request = menunggu httpClient.PostAsync(requestUrl, konten);

Temukan detail lebih lanjut tentang 'PostAsJsonAsync' di HttpClient tidak mendukung metode PostAsJsonAsync C#

1
Prasad Ramireddy 22 Desember 2020, 16:19