C # REST API Client Prestashop - PullRequest
       14

C # REST API Client Prestashop

1 голос
/ 07 февраля 2012

Я мог получить данные XML из API Prestashop, но не смог PUT/POST Данные XML в PrestaShop API.

Может ли кто-нибудь подсказать, где я могу ошибаться?

public POST_xml()
{
     Uri address = new Uri("http://.../api/countries/1");
     HttpWebRequest request = WebRequest.Create("http://.../api/countries/1") as HttpWebRequest;

     NetworkCredential("15PJQ4V8CXI22JVW1TKZASDF0OAYNBLA", "");

     // Create the web request  
     request = WebRequest.Create(address) as HttpWebRequest;

     // Set type to POST  
     request.Method = "POST";
     request.ContentType = "application/x-www-form-urlencoded";

     // Create the data we want to send.  

     string context = "<prestashop><country><id>1</id><id_zone xlink:href=\"http://.../api/zones/1\">";
     context += "1</id_zone><id_currency/><iso_code>DE</iso_code><call_prefix>49</call_prefix><active>1</active><contains_states>0</contains_states><need_identification_number>0</need_identification_number><need_zip_code>1</need_zip_code><zip_code_format>NNNNN</zip_code_format><display_tax_label>1</display_tax_label><name><language";
     context += " id=\"6\" xlink:href=\"http://.../api/languages/6\">Germanyxx</language></name></country></prestashop>";


     StringBuilder data = new StringBuilder();
     data.Append("&context=" + HttpUtility.UrlEncode(context));


     // Create a byte array of the data we want to send  
     byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());

     // Set the content length in the request headers  
     request.ContentLength = byteData.Length;

     // Write data  
     using (Stream postStream = request.GetRequestStream())
     {
         postStream.Write(byteData, 0, byteData.Length);
     }
}

Ответы [ 3 ]

2 голосов
/ 08 сентября 2012

Я не экспортирую в c #, но я заставил вызов REST работать как в Java, так и в VBA. Мало что не так с вашим кодом. Я предполагаю, что вы хотели бы создать новую запись в стране. Тогда ваш URL-адрес должен быть

Uri address = new Uri("http://.../api/countries/");

И в вашем строковом контексте вы не можете установить идентификатор для нового ресурса.

То, что вы здесь показываете, в значительной степени сработает для запроса PUT на ресурсе "страны / 1".

1 голос
/ 13 мая 2012
  1. Если вы хотите обновить страну с id = 1, вам нужно установить тип запроса на «PUT»
  2. Нет необходимости добавлять «& context»
  3. Если это все ещене работает.Загрузите их пример кода на http://doc.prestashop.com/display/PS14/Using+the+REST+webservice. Затем запустите код "update.php", посмотрите, как они делают запрос.
1 голос
/ 05 марта 2012
  1. API веб-службы PrestaShop ожидает, что XML будет иметь префикс xml = для запросов POST.
  2. Используйте программу под названием Fiddler - Http Debugging proxy, чтобы точно увидеть, что вы отправляете и что отвечает веб-сервис.
...