fsockopen and SSL Problem

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
TheMoose
Forum Contributor
Posts: 351
Joined: Tue May 23, 2006 10:42 am

fsockopen and SSL Problem

Post by TheMoose »

I'm just trying to test one of the webservices we use at work, but I can't even set up a simple PHP script to test it :(

The problem I'm having is that I can't connect to the server that is running the service to even try to post a request to it. Here's what I got:

Code: Select all

switch($_GET['try']) {
	case 1:
		$fp = fsockopen("https://axis.adin.net", 80, $errno, $errstr, 30);
		break;
	case 2:
		$fp = fsockopen("https://axis.adin.net", 443, $errno, $errstr, 30);
		break;
	case 3:
		$fp = fsockopen("axis.adin.net", 80, $errno, $errstr, 30);
		break;
	case 4:
		$fp = fsockopen("axis.adin.net", 443, $errno, $errstr, 30);
		break;
	case 5:
		$fp = fsockopen("https://axis.adin.net");
		break;
}
if (!$fp) {
	echo "$errstr ($errno)<br />\n";
} else {
	$file = file_get_contents("myxml.xml");
	$out = "POST /interfaces/loanshield.asmx/PullLoanShield HTTP/1.1\n";
	$out .= "Host: axis.adin.net\n";
	$out .= "Content-Type: application/x-www-form-urlencoded\n";
	$out .= "Content-Length: " . strlen($file) . "\n";
	$out .= "strXML=" . $file;

	$result = "";
	fwrite($fp, $out);
	while (!feof($fp)) {
		$result .= fgets($fp, 1024);
	}
	fclose($fp);
	echo $result;
}
The problem is the fsockopen itself. If I use just fsockopen("https://axis.adin.net") (no port), it goes straight to the error out line (just blank since I didn't want to know the errors), but if I put in 80 or 443 for the port, it breaks (port 80, port 443). If I try just fsockopen("axis.adin.net", 80) or 443, it "works", but no result comes back at all (port 80, port 443).

I'm not exactly sure what's going on with it. It seems to want to work when it uses the default TCP protocol, and even when I visit http://axis.adin.net, I get no response from the webserver at all, however if I visit https, it works just fine.
User avatar
Christopher
Site Administrator
Posts: 13596
Joined: Wed Aug 25, 2004 7:54 pm
Location: New York, NY, US

Post by Christopher »

Well the fact that that website returns a 403 not available on port 443 and nothing on port 80 may be the problem. It is a great opportunity to build the error handling code now. ;)
(#10850)
Post Reply