При использовании метода POST для вызова API я получаю ошибку (Fatal no Params) - PullRequest
0 голосов
/ 25 мая 2018

Когда я использую cURL для публикации в своем API, он работает на 100%, я собираю настольное приложение на C #, которое требует того же самого при нажатии кнопки.когда я перехватываю свой код через fiddler, он показывает, что он успешно соединяется, но выдает мне эту ошибку: {"fatal": "Нет параметров POST!"}

когда я использую Postman для тестирования, я получаю ту же ошибку:

{"fatal": "Нет параметров POST!"}

это мой скрипт cURL, который работает:

curl -u username: "password" -X POST http://localhost/api/index.php -d method = "addSubscriber" -d first_name = "test" -d last_name = "account" -d address = "980 westlane, Khomasdal" -d почтовый индекс = "999 Виндхук" -d страна = "Намибия"-d email = "test@gmail.com" -d mobile_number = "26487222225" -d пакет [package_uid] [] = "живой" -d пакет [package_uid] [] = "timeshift" -d пакет [valid_from] []= "2018-05-24" -d пакет [valid_from] [] = "2018-05-24" -d пакет [продолжительность] [] = "31" -d пакет [продолжительность] [] = "31"

это мой код на C #: где я использую HttpWebRequest:

        HttpWebRequest webRequest;
        webRequest = (HttpWebRequest)WebRequest.Create("http://localhost/api/index.php");
        String authHeaer = System.Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(userName + ":" + userPassword));

        webRequest.Method = "POST";
        webRequest.ContentType = "application/x-www-form-urlencoded";
        string requestParams = "{\"method\" : \"addSubscriber\",\"first_name\" : '"+txt_fname.Text+"', \"last_name\" : \"'"+txt_lname.Text+"'\", \"address\":\"default\", \"postcode\":\"0000\", \"country\" : \"Namibia\", \"email\" :\"'"+txt_email.Text+"'\", \"mobile_number\" : \"'"+txt_cellno.Text+"'\", \"package_uid\" : \"live\", \"package_valid_from\" : \"'"+DateTime.Now+"'\", \"package_duration\" : \"'"+txtDuration.Text+"'\"}"; //format information you need to pass into that string ('info={ "EmployeeID": [ "1234567", "7654321" ], "Salary": true, "BonusPercentage": 10}');
        webRequest.Headers[HttpRequestHeader.Authorization] = "Basic " + authHeaer;
        byte[] byteArray = Encoding.UTF8.GetBytes(requestParams);
        webRequest.ContentLength = byteArray.Length;
        using (Stream requestStream = webRequest.GetRequestStream())
        {
            requestStream.Write(byteArray, 0, byteArray.Length);
        }

        // Get the response.
        using (WebResponse response = webRequest.GetResponse())
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                StreamReader rdr = new StreamReader(responseStream, Encoding.UTF8);
                string Json = rdr.ReadToEnd(); // response from server

            }
        }

        MessageBox.Show("Client Added Succesfully");

1 Ответ

0 голосов
/ 06 июня 2018

Я изменил свой тип контента с json на urlencoded и немного изменил формат, и я мог получить желаемый вывод, который хотел.

Вот новый код ниже:

HttpWebRequest webRequest;webRequest = (HttpWebRequest) WebRequest.Create ("http://197.188.246.11/megatel/api/v1/index.php"); String authHeaer = System.Convert.ToBase64String (System.Text.ASCIIEncoding.ASCII.GetBytes (userName +": "+ userPassword)); 1007

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