Соединение API - миграция C# пример на PHP (Wordpress) - PullRequest
2 голосов
/ 04 марта 2020

Мне нужно подключиться к API. Все примеры, которые я смог найти, используют токены, которые я могу отправить каждой транзакции, которую я желаю.

Согласно документации поставщика, я не смог найти ничего, связанного с токенами.

Проблема в том, что когда я подключаюсь, используя curl или wp_remote_post (), у меня нет «подключенного» объект, чтобы продолжать делать транзакции, которые мне нужны.

Ниже - как это делается в C#. Мне нужно несколько указаний относительно того, какие объекты я должен использовать, и создать такую ​​же функциональность в php. Спасибо

Класс подключения:

public class RestService: IDisposable {
    private readonly HttpClient _httpClient;
    private readonly string _acumaticaBaseUrl;
    public RestService(
    string acumaticaBaseUrl, string userName, string password, string company, string branch, string locale) {
        _acumaticaBaseUrl = acumaticaBaseUrl;
        _httpClient = new HttpClient(
        new HttpClientHandler {
            UseCookies = true,
            CookieContainer = new CookieContainer()
        }) {
            BaseAddress = new Uri(acumaticaBaseUrl + "/entity/Default/6.00.001/"),
            DefaultRequestHeaders = {
                Accept = {
                    MediaTypeWithQualityHeaderValue.Parse("text/json")
                }
            }
        };
        //Log in to MYOB Advanced 
        _httpClient.PostAsJsonAsync(
        acumaticaBaseUrl + "/entity/auth/login", new {
            name = userName,
            password = password,
            company = company,
            branch = branch,
            locale = locale
        }).Result.EnsureSuccessStatusCode();
    }
    void IDisposable.Dispose() {
        _httpClient.PostAsync(_acumaticaBaseUrl + "/entity/auth/logout", new ByteArrayContent(new byte[0])).Wait();
        _httpClient.Dispose();
    }
}

////////////////

//Data submission 
public string Put(string entityName, string parameters, string entity) {
    var res = _httpClient.PutAsync(_acumaticaBaseUrl + "/entity/Default/6.00.001/" + entityName + "?" + parameters, new StringContent(entity, Encoding.UTF8, "application/json")).Result.EnsureSuccessStatusCode();
    return res.Content.ReadAsStringAsync().Result;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...