Итак, у меня есть сайт woopress с woo commerce. Я нахожусь в процессе написания приложения для отдыха С# WebApi для взаимодействия с сайтом WordPress. На данный момент я могу поймать такие вещи, как создание нового продукта, создание заказа из woo с помощью веб-хуков.
Теперь я пытаюсь пойти другим путем и в этом случае опубликовать новый продукт в wordpress из моего API.
Я установил последнюю версию WooCommerce.Net из Nuget (V4.0.30319).
Для тестирования я создал продукт:
var wooProduct = new WooCommerceNET.WooCommerce.v3.Product
{
name = "test product",
type = "simple",
regular_price = 23.99m,
description = "test product to see if I can create a product using rest APi",
short_description = "this is a short desc",
shipping_required = true,
stock_quantity = 20
};
wooProduct.categories = new List<ProductCategoryLine>();
wooProduct.categories.Add(new ProductCategoryLine { id = 1 });
Тогда для отправки у меня есть:
var fullEndPoint = string.Concat(site, "/wp-json/wc/v3/", endpoint);
var serializedData = JsonConvert.SerializeObject(postdata);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fullEndPoint);
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("consumer_key", woosecret);
string encoded = System.Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1")
.GetBytes(username + ":" + password));
request.Headers.Add("Authorization", "Basic " + encoded);
using (StreamWriter swJSONPayload = new StreamWriter(request.GetRequestStream()))
{
swJSONPayload.Write(serializedData);
swJSONPayload.Close();
}
но ничего не происходит, и я не получаю никаких сообщений об ошибках. В документации сказано, что
WooCommerceNET.RestAPI
устарел, и все примеры не показывают, как отправлять из C#. Если кто-нибудь может указать мне правильное направление, я был бы очень признателен.
Обновление: я добавил базовую авторизацию, где имя пользователя и пароль являются действительными настройками пользователя на wordpress/woo. Теперь я получаю несанкционированную ошибку 401, но не знаю, что еще мне нужно указать, чтобы разрешить это.
Обновление 2: у меня не включена обычная проверка подлинности в IIS. Теперь, когда я это сделал, я получаю сообщение об ошибке, предполагающее, что IIS не может проверить подлинность предоставленного имени пользователя и пароля. Эти детали настраиваются в wordpress и не являются общесистемными. В данный момент я запускаю все это на машине разработчика с Windows 10, поэтому Active Directory тоже нет.
Вы пытались отправить запрос через что-то вроде PostMan? Мне нравится тестировать там, так как он дает более полезную информацию об ошибках.
@JohnPete22, используя почтальон, я все еще получаю 401, но он дает
"Sorry, you are not allowed to create resources."
Пользователь, которого я передаю в авторизации, настроен на woo как администратор и имеет доступ для чтения/записи.Что касается специфики WooCommerce, я не совсем уверен, хотя, возможно, у них есть какая-то документация по этой ошибке, или вам, возможно, придется обратиться в службу поддержки. По крайней мере, у вас есть общее представление о том, что сейчас связано с разрешениями/авторизацией, и ваш код должен работать после разрешения.