0

我有两个 Web 应用程序,只是说 webAppA 和 webAppB。webAppA 部署在通过 https 8443 运行的 tomcat7 中。它使用基本身份验证方案提供 RESTful 服务。webAppB 是基于 php 的 Web 应用程序,它使用 webAppA 进行身份验证并显示一些 REST 资源。它通过 https 443 部署在 apache2 中。每当我尝试从 webAppB 向 webAppA 发出 http 请求时,请求都会失败,并在下面抛出 open ssl 异常。谁能帮助我可能出了什么问题?来自 webAppB 的负责 http 连接的代码片段如下所示。

/**
 * Check the username / password against the other webAppA$
 */
function webAppA_auth_check($username, $password) {

  require_once("auth-functions.php");
  require_once("HTTP/Request2.php");

  $bare_base_url = localhost
  // using basic authentication
  $url =  https://'.$username.':'.$password.'@'.$bare_base_url.':8443/app/ws/rest/v1/session';

  $request = new HTTP_Request2($url, HTTP_Request2::METHOD_GET);
  $request->setConfig(
      array(
          'ssl_verify_peer'   => false,
          'ssl_verify_host'   => false,
      )
  );
  try {
    $response = $request->send();
  } catch (HTTP_Request2_Exception $e) {
    echo 'Error: ' . $e->getMessage();
    var_dump($e->getMessage());
    exit();
  }
}

异常如下所示。

Error: Unable to connect to ssl://123@localhost:8443. Error: php_network_getaddresses: getaddrinfo failed: Name or service not knownstring(127) "Unable to connect to ssl://123@localhost:8443. Error: php_network_getaddresses: getaddrinfo failed: Name or service not known"

PS:用户名是dummy,密码是dummy123

4

1 回答 1

1

只需使用Curl代替 http 请求

例子

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
  curl_setopt( $ch, CURLOPT_URL, $url );
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
  $response = curl_exec($ch);
  print_r($response);
于 2013-10-19T09:56:56.263 回答