2015-02-02 2 views
1

Я использую codeigniter, и я хочу отправить запрос на добавление в openfire, но я действительно не понимаю, что мне нужно делать. Я новичок, я прочитал это руководство User Service, и я попытался добавить нового пользователя с curl Curl lib, но я застрял. Openfire настроен правильно, потому что если я сделать запрос из браузера надстройку работает Это мой кодОтправить userervice запрос openfire

$this->load->library('curl'); 
    $username='usertest'; 
    $password='password'; 
    $header='Authorization'; 
    $content='mykey'; 
    $this->curl->create('http://myserver.net', 9090); 
    $this->curl->http_header($header, $content); 
    $this->curl->http_header('Content-Type', 'application/xml'); 
    $this->curl->post(array('username'=>$username,'password'=>$password)); 
    $this->curl->execute(); 

Но пользователи не будут добавлены

Я прошу прощения за мой плохой английский

+1

Взгляните на вторую часть этого: http://code.tutsplus.com/tutorials/working-with-restful-services-in-codeigniter-2--net-8814 – AdrienXL

+0

Спасибо, с помощью этого руководства больше нет ошибок, но пользователи не добавляются, я думаю, что что-то не так в аутентификации или в параметрах сообщений –

ответ

1

Вот один реализация клиента обслуживания пользователя (он основан на Curl, но не на CodeIgniter):

$url = "http://localhost:9090/plugins/userService/users"; 
    $xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <user> 
    <username>'.$user['username'].'</username> 
    <password>'.$user['password'].'</password> 
    <name>'.$user['name'].'</name> 
    <email>'.$user['email'].'</email> 
    </user>'; 



    //open connection 
    $ch = curl_init(); 


    //set the url, number of POST vars, POST data 
    curl_setopt($ch,CURLOPT_URL, $url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch,CURLOPT_HEADER,true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: secret', 
    'Content-Type: application/xml' 
)); 
    curl_setopt($ch, CURLOPT_POST,   1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,  $xml); 
    #curl_setopt($ch,CURLOPT_POSTFIELDSPOST, count($fields)); 
    #curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 


    //execute post 
    $result = curl_exec($ch); 
    $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    ob_start(); // outer buffer 
    #echo "Code: $http_status | Username: {$user['name']}\n"; 
    ob_end_flush(); 
    //close connection 
    curl_close($ch); 

    if ($http_status == 201) { 
    return true; 
    } 
    else return false; 

Вы должны установить тип контента и и Auth orization как массив в заголовке. И ваш XML-контент выглядит неправильно. Это не только имя пользователя и пароль в массиве.

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