Curl Request с ASP.NET - программирование
Подтвердить что ты не робот

Curl Request с ASP.NET

Я прочитал некоторые другие сообщения в Stack, но я не могу заставить это работать. Он отлично работает на моем, когда я запускаю команду curl в git на моем компьютере с Windows, но когда я конвертирую его в asp.net, он не работает:

 private void BeeBoleRequest()
    {   
        string url = "https://mycompany.beebole-apps.com/api";

        WebRequest myReq = WebRequest.Create(url);            

        string username = "e26f3a722f46996d77dd78c5dbe82f15298a6385";
        string password = "x";
        string usernamePassword = username + ":" + password;
        CredentialCache mycache = new CredentialCache();
        mycache.Add(new Uri(url), "Basic", new NetworkCredential(username, password));
        myReq.Credentials = mycache;
        myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));

        WebResponse wr = myReq.GetResponse();
        Stream receiveStream = wr.GetResponseStream();
        StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
        string content = reader.ReadToEnd();
        Response.Write(content);
    }

Это API BeeBole. Его довольно прямое fwd. http://beebole.com/api, но при запуске выше я получаю следующую ошибку 500:

Удаленный сервер ответил на ошибку: (500) Внутренняя ошибка сервера.

4b9b3361

Ответ 1

HTTP-метод по умолчанию для WebRequest - GET. Попробуйте настроить его на POST, так как ожидаемый API

myReq.Method = "POST";

Я предполагаю, что вы что-то публикуете. В качестве теста я собираюсь опубликовать те же данные из своего примера скручивания.

string url = "https://YOUR_COMPANY_HERE.beebole-apps.com/api";
string data = "{\"service\":\"absence.list\", \"company_id\":3}";

WebRequest myReq = WebRequest.Create(url);
myReq.Method = "POST";
myReq.ContentLength = data.Length;
myReq.ContentType = "application/json; charset=UTF-8";

string usernamePassword = "YOUR API TOKEN HERE" + ":" + "x";

UTF8Encoding enc = new UTF8Encoding();

myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(enc.GetBytes(usernamePassword)));


using (Stream ds = myReq.GetRequestStream())
{
ds.Write(enc.GetBytes(data), 0, data.Length); 
}


WebResponse wr = myReq.GetResponse();
Stream receiveStream = wr.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
string content = reader.ReadToEnd();
Response.Write(content);