2017-05-14 10 views
3

私はAWS上にある既に作成された認証アクティブリポジトリに1つのログインWebインターフェイスを接続しようとしています。PHPでのcURLの処理

{ 
"userName" : "Victor", 
"userPassword" : "pwd123" 
} 

をそして、それは正常に動作し、私は私のリポジトリから正しい答えを受け取る:私は、私はこのようなJSONのアプリケーションのための生のテンプレートを使用して、ポストマンを使用してそれをやって試してみましたが、その上で新しいです。しかし、私はそれを行う私のPHPプロジェクトを使用していると、私は同じ正確なデータでフォームを記入、私はステータスを受け取る:403メッセージ:間違ったユーザー名またはパスワード。

ポストマン・コードは、私にCURLOPT_POSTFIELDSため、そのソリューション提供:

CURLOPT_POSTFIELDS => "{\n\t\"userName\" : \"Victor\",\n\t\"userPassword\" : \"pwd123\"\n}", 

をしかし、私はあなたが表示されますように、私はそれらを変更する形でこのフィールドを入力する必要があります。ここで

は、私が使用していたコードは、私は任意の助け:)

public function loginAction(Request $request) 
{ 
    $twigParams=array(); 
    $DTO = new LoginDTO($request, $this->container, null); 
    $form = $DTO->getForm(); 
    $form->handleRequest($request); 
    if ($form->isSubmitted() && $form->isValid()) { 

     $upass = $DTO->getUserPass(); 
     $uname = $DTO->getUserName(); 

     $curl = curl_init(); 

     $fields=array("userName"=> $uname, "userPassword"=> $upass); 
     curl_setopt_array($curl, array(
      CURLOPT_PORT => "80", 
      CURLOPT_URL => "http://wt-services-internal-appl-blablabla..", 
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_ENCODING => "", 
      CURLOPT_MAXREDIRS => 10, 
      CURLOPT_TIMEOUT => 30, 
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
      CURLOPT_CUSTOMREQUEST => "POST", 
      CURLOPT_POSTFIELDS => $fields , 
      CURLOPT_HTTPHEADER => array(
       "cache-control: no-cache", 
       "content-type: application", 
       ), 
     )); 

     $response = curl_exec($curl); 
     $err = curl_error($curl); 

curl_close($curl); 

$twigParams["form"]=$form->createView(); 
return $this->render('auth/login.html.twig', $twigParams); 
} 
+0

私の認証リポジトリでは、JSON形式のアクセスデータがあり、JSON形式でデータを送信していないことに気が付いたので、正しく入力してください: $ fields = array( "userName" => $ uname、 "userPassword" => $ upass); $ fields = json_encode($ fields); そして私はその配列をCUR​​LOPT_POSTFIELDSに入れ、CURLOPT_HTTPHEADERの "content-type:application/json"の "content-type:application"を変更します。とにかく、ありがとう、コーディングを続けてください –

+2

代わりにこのコメントを回答として書き込み、それを受け入れます。それはあなたに少しの評判をもたらし、他の開発者にとってもその答えを見やすくするでしょう。 – Ray

答えて

0

ためthankfullなり、イム本当にこだわっている私は、私の認証リポジトリに、私はJSON形式でアクセスデータを持っていることに気づきました私はJSON形式でデータを送信していませんでした。

$fields = array("userName" => $uname, "userPassword" => $upass); 
$fields = json_encode($fields); 

私はCURLOPT_POSTFIELDSにその配列を入れて、「コンテンツタイプ:アプリケーション」変更:CURLOPT_HTTPHEADERで、「アプリケーション/ JSONコンテンツタイプ」にそれを修正するには、私はこれがしました。

問題を修正しました。