2017-07-31 7 views
-2

助け、私はこれを前にしたことはありません。私はとても混乱しています。 APIウェブスクリプトからデータを取得してエコーするには、ユーザーのログインが必要です。認証ログインユーザとパスワードでPHPを使用してデータAPI Webスクリプトを取得する方法は?

ここhttp://[my_url]/alfresco/s/api/workflow-instances

は、APIのWebスクリプトからのデータであるように、リンクが見えます:

{ "data": [{ 
    "id": "activiti$162149", 
    "url": "api\/workflow-instances\/activiti$162149", 
    "name": "activiti$cwfpm4", 
    "title": "004 SO Broadcast", 
    "description": "Gate 4 dari Sistem Manajemen Dokumentasi Proyek", 
    "isActive": true, 
    "startDate": "2017-01-11T19:31:07.000+07:00", 
    "priority": 2, 
    "message": "P18M0002 - Project Management Workflow", 
    "endDate": null, 
    "dueDate": null, 
    "context": "workspace:\/\/SpacesStore\/fe2896bc-adfe-48f7-b990-9308e327ff7e", 
    "package": "workspace:\/\/SpacesStore\/ab114d0a-f370-4e20-92ee-f22c3e09d87f", 
    "initiator": 
    { 
     "userName": "U_MAS", 
     "firstName": "U_MAS", 
     "lastName": "" 
    }, 
    "definitionUrl": "api\/workflow-definitions\/activiti$cwfpm4:70:161630"} 
]} 

私は次のことを試してみた:

$json_string = file_get_contents("[my_url]/alfresco/s/api/workflow-instances?alf_ticket=''"); 
$parsed_json = json_decode($json_string); 

ここではJavaを使用してチケットautenticationです:

public String generateTicketSource() throws JSONException { 
      String alfrescoTiccketURL = alfrescoUrl + "/alfresco"+"/service/api/login?u="+userName+ "&pw="+password; 
      String ticketURLResponse = invokeWebScriptgetRequest(alfrescoTiccketURL); 
      return ticketURLResponse; 
     } 
public static String invokeWebScriptgetRequest(String url) { 
      String ticket = null; 
      HttpClient client = new HttpClient(); 
      GetMethod method = new GetMethod(url); 
      String response = null; 
      try { 
       int statusCode = client.executeMethod(method); 
       if (statusCode != HttpStatus.SC_OK) { 
        System.err.println("Method failed: " + method.getStatusLine()); 
       } 
       byte[] responseBody = method.getResponseBody(); 
       response = new String(responseBody); 
       JSONObject jsonObject = new JSONObject(response); 
       ticket = jsonObject.getJSONObject("data").getString("ticket"); 
      } catch (HttpException e) { 
       System.err.println("Fatal protocol violation: " + e.getMessage()); 
      } catch (IOException e) { 
       System.err.println("Fatal transport error: " + e.getMessage()); 
      } finally { 
       method.releaseConnection(); 
      } 
      return ticket; 
     } 
Javaを

チケット変数は、私はその上のさっぱりだが

link -> [url]?alf_ticket=tiket (on file_get_contents) 

を次の認証ログインのために使用しますが、私はAPIのWebスクリプトからデータをエコーし​​ます。

+0

が回答されている質問にvandalizeしないでください。このサイトの目的は他人を助けることです。それがあなたのために解決されたからといって、その質問が役に立たないというわけではありません。質問が一人にしか役に立たない場合、それは一般にここに属しません。 –

答えて

0

私はこれについてはっきりしません。しかし、私はあなたが要求が承認ヘッダーを持っている必要があることを意味すると思います。私はこのようなものを見つけるhttp://www.hashbangcode.com/blog/using-authentication-and-filegetcontents それが助けてくれることを望みます。

+0

はい、このように!私はまずそれを試してください、参考に感謝〜 – Vedblaze

0

は、ここでそれを解決したものです:

$url = '[my_url]'; 

$username = 'user'; 
$password = 'password'; 

$context = stream_context_create(array(
    'http' => array(
     'header' => "Authorization: Basic " . base64_encode("$username:$password") 
    ) 
)); 
$data = file_get_contents($url, false, $context); 

echo $data; 
関連する問題