2

こんにちは、APIを使用しています。APIドキュメントでは、すべてのデータがUTF-8エンコーディングを使用してJSONとして送受信されることが明確に記述されています。そしてその後、彼らは一行を与えました

$ curl -­-­user name:password https://api.abc.de/erer

上記のようにcurlリクエストを送信する方法を尋ねたいだけですか?ユーザー名とパスワードはGETPOSTまたはで送信されheadersます。

次のコードを使用していますが、空の配列を受け取っています。ドキュメントには、エラーまたは成功コードを受け取る必要があると記載されています。

$ch = curl_init();
            $post_data = array('username'=>$_POST['username'],'password'=>$_POST['password']);
            $post_data = http_build_query($post_data);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_USERPWD, 'username:password');

            $result = curl_exec($ch);
            curl_close($ch);

            $result = json_decode($result);
            $result = (array) $result;
            echo "<pre>";
            print_r($result);
            echo "</pre>";
            die();

curl_get_info私はその応答を印刷しました

Array
(
[url] => https://api.abc.de/erer
[content_type] => 
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 0.618462
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => 0
[upload_content_length] => 0
[starttransfer_time] => 0
[redirect_time] => 0
)
4

2 に答える 2

3

提供された情報を考えると、POST リクエストを行っていると仮定すると、次のようなものが機能するはずです。

$post_data = http_build_query( $post_array );
$url = 'https://api.abc.de/erer';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'name:password');
$data = curl_exec( );
curl_close($ch);

$post_data には、送信するキー => 値の連想配列を含める必要があります。あなたの user:password はヘッダーで送信されると思いますが、PHP.net は言いません。

http://www.php.net/manual/en/function.curl-setopt.php

于 2012-10-10T13:09:19.917 に答える
2

与えられた例を見てください..

$token = "username:password";
$url = "https://api.abc.de/erer";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_USERPWD, $token);
/*curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);*/                    
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

if( curl_exec($ch) === false ){
    echo curl_error($ch);
}else{
    $data = curl_exec($ch);
}
curl_close($ch);

echo "<pre>";
print_r($data);
echo "</pre>";
于 2012-10-10T13:10:10.517 に答える