سؤال

أحاول الاتصال بواجهة برمجة تطبيقات Webtrend باستخدام PHP ولكن لم أتمكن من المصادقة.

المثال الوارد في وثائق WT مخصص لـ .NET أو Ruby، ومثال .Net يشبه هذا:

var svc = new WebClient();
        svc.Credentials = new NetworkCredential("yourWebTrendsAccount\WebTrendsUserName", "yourSuperSecretPassword");
        svc.DownloadStringCompleted += svc_DownloadStringCompleted;
        svc.DownloadStringAsync(new Uri(baseUri));

لست على دراية بـ .NET، ولكن هل يوجد ما يعادل فئة WebClient تلك على PHP؟

لقد كنت أحاول المصادقة باستخدام CURL باستخدام

username = "my_account_name/my_login_name" 
password = "my_password" 

ولكن حتى الآن لم يحالفهم الحظ.أحصل على رسالة خطأ تفيد بأن المعلمات غير صحيحة.

تحديث: إضافة رمز

    $username=urlencode('my_account_name\my_login_name');
    $password="my_password";


    $postdata="username=$username&password=$password";

    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL,"https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml");
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
    curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
    curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt ($ch, CURLOPT_POST, 1);
    $result = curl_exec ($ch);
    curl_close($ch);
    var_dump($result);

لقد حاولت أيضًا

curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

ولكن لا حظ حتى الآن.

هل كانت مفيدة؟

المحلول

قدم @Kevin Horst مثالًا جيدًا لتنفيذ طلب مصادقة أساسي باستخدام curl وPHP.غالبًا ما أحتاج إلى القيام بذلك عبر سطر الأوامر.للقيام بذلك، تحتاج إلى تثبيت برنامج Curl على نظامك.

 curl --user username:password \
-i https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml

وفقًا للوثائق الموجودة على WebTrends Data Extraction API.يستخدمون المصادقة الأساسية عبر SSL وهو معيار لمصادقة RESTful.

واجهة برمجة تطبيقات استخراج البيانات WebTrends

نصائح أخرى

أعتقد أنه يتعين عليك استخدام CURLOPT_USERPWD بدلاً من البيانات اللاحقة:

$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, 'https://ws.webtrends.com/v2/ReportService/profiles/XXXXXXXX/reports/XXXXXXXX/?totals=all&period=2011w14&format=xml');
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($connection, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, sprinf('%s:%s', $username, $password))
$data = curl_exec();
curl_close($ch); 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top