2013-12-20 2 views
0

Я использую библиотеку REST Service с C# под названием RestSharp. Я слишком долго пытался отправить информацию на сервер электронной почты (служба рассылки новостей), но я пока не смог его сделать. Я могу публиковать, размещать и получать основную информацию, но я не могу сделать то же самое с полями или списками в отправленном Json.Не удается отправить информацию на сервер REST

RestClient client = new RestClient(); 
client.BaseUrl = "https://s3s.fr/api/rest/1/"; 
client.Authenticator = new HttpBasicAuthenticator(splioUser, splioPass); 
var request = new RestRequest("{item}", Method.POST); 
request.RequestFormat = DataFormat.Json; 
request.AddUrlSegment("item", "contact"); 
request.AddParameter("email", "[email protected]"); 
request.AddParameter("firstname", "Jhonny"); 
request.AddParameter("lastname", "Test"); 
request.AddParameter("lang", "EN"); 

И вот результат:

{"email":"[email protected]","date":"2013-12-20 18:43:42","firstname":"Jhonny","lastname":"Test","lang":"EN","fields":[{"id":"0","name":"sexo","value":""},{"id":"1","name":"nascimento","value":""},{"id":"2","name":"cidade","value":""},{"id":"3","name":"estado","value":""},{"id":"4","name":"data altera\u00e7\u00e3o do cadastro","value":""},{"id":"5","name":"data \u00faltima compra","value":""},{"id":"6","name":"data primeira compra","value":""},{"id":"7","name":"data de criacao do cadastro","value":""},{"id":"8","name":"data de ultimo login no site","value":""}],"lists":[]} 

кажется, что я не могу включать в себя любые значений между «списками» и значениями «полей».

Там в руководство ориентирующий, как сделать это с помощью PHP:

$universe = 'testapi'; 
$pass = 'MySecretAPIKEY'; 
$resource = ‘contact‘ ; 
$email = ‘[email protected]’ $service_url = "https://$universe:[email protected]/api/rest/1/$resource/$email"; 
$curl = curl_init($service_url); 
$query = array ('email' => ‘[email protected]', 'lang' => 'de', 'fields' => array (array ('id' => '0', 'value' => 'bl10'), array ('name' => 'field2', 'value' => 'myothercustomfield_value'),), 'lists' => array (array ('name' => 'Test Api'), array ('id' => '5', 'action' => 'unsubscribe'),),) ; 
$qstring = json_encode($query); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($curl, CURLOPT_POSTFIELDS,$qstring); 
curl_setopt($curl,CURLOPT_HTTPHEADER,array("Expect:")); 
$curl_response = curl_exec($curl); 
curl_close($curl); 
var_dump($curl_response); 
var_dump(json_decode($curl_response, true)); 

Спасибо заранее!

+0

Вы пытались сделать необработанный WebRquest вместо использования restsharp? – user3096476

+0

Нет, я на самом деле этого не делал. – user3123564

ответ

0

Используя RestSharp, вы должны использовать встроенную сериализацию json. Смотрите эту previous answer для примера

ADDED

Кроме того, я считаю, что с помощью Fiddler или подобный инструмент очень полезен для отладки. Fiddler требует некоторого configuration для отслеживания трафика для некоторых случаев использования,

+0

Я добавляю параметры tho. Я уже пробовал делать: Параметр [] fields = new Параметр [3]; поля [0] = новый Параметр() {Name = "sexo", Value = "M"}; поля [1] = новый Параметр() {Name = "nascimento", Value = "11/12/2013"}; поля [2] = новый Параметр() {Name = "cidade", Value = "santos"}; request.AddParameter («поля», поля); request.AddBody (поля); – user3123564

Смежные вопросы