PHP cURL "HTTP Version Mismatch" trouble with XML API

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
ryes31
Forum Newbie
Posts: 2
Joined: Sun Jun 13, 2010 12:58 pm

PHP cURL "HTTP Version Mismatch" trouble with XML API

Post by ryes31 »

Hi, I'm having some frustrating issues trying to parse Indeed.com's XML API on my server using PHP. They only allow HTTP GET, and not POST. I've tried using both cURL and PHP-DOM and am getting the same error. Here's my code:

(removed my Publisher number for security reasons...)

Code: Select all

$publisher = "XXXXXXXXXXXXXXXX";
$sort = "relevance";  ## Sort by "relevance" or "date"
$radius = "50";  ## Distance from search location
$st = "";  ## Site type (default blank- can set to "jobsite" or "employer")
$jt = "";  ## Job type (default blank- can set to fulltime, parttime, contract, internship, or temporary)
$start_number = 0;  ## Start search results at this number (used for pagination)
$limit = "10";  ## Number of results per page
$fromage = "";  ## Number of days to search back (default blank = 30)
$highlght = "1";  ## Bold the keyword search terms in results (set to 0 for no bold)
$filter = "1";  ## Filters out duplicate results (set to 0 for no filter)
$latlong = "0";  ## If latlong=1, returns latitude and longitude information for each result
$co = "us";  ## Country to search jobs in
$chnl = "";  ## API Channel request.  Leave blank for none
$userip = $_SERVER['REMOTE_ADDR'];  ## IP address of user
$useragent = $_SERVER['HTTP_USER_AGENT'];  ## User's browser type

$data = "http://api.indeed.com/ads/apisearch?";

$data .= "publisher=" . $publisher . "&";
$data .= "q=" . $_SESSION[keyword] . "&";
$data .= "l=" . $_SESSION[location] . "&";
$data .= "sort=" . $sort . "&";
$data .= "radius=" . $radius . "&";
$data .= "st=" . $st . "&";
$data .= "jt=" . $jt . "&";
$data .= "start=" . $start_number . "&";
$data .= "limit=" . $limit . "&";
$data .= "fromage=" . $fromage . "&";
$data .= "highlight=" . $highlight . "&";
$data .= "filter=" . $filter . "&";
$data .= "latlong=" . $latlong . "&";
$data .= "co=" . $co . "&";
$data .= "chnl=" . $chnl . "&";
$data .= "userip=" . $userip . "&";
$data .= "useragent=" . $useragent;

$ch = curl_init($data);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURL_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);

$response = curl_exec($ch);

curl_close($ch); 
And this is the error I'm getting every time, no matter what I do (even when I try to force the CURL_HTTP_VERSION):

Code: Select all

HTTP/1.1 400 Bad Request Connection: close Content-Type: text/html Content-Length: 139
Bad Request
Bad Request. Http version mismatch.
The URL that is built is vaild, because when I copy/paste it in my browser, it pulls up the XML Response I'm looking for.

Can anyone help me out with this? Am I missing something completely obvious? Can I not even use cURL for something like this? Thanks in advance!

-Ryan
User avatar
requinix
Spammer :|
Posts: 6617
Joined: Wed Oct 15, 2008 2:35 am
Location: WA, USA

Re: PHP cURL "HTTP Version Mismatch" trouble with XML API

Post by requinix »

If you're just doing a regular GET request why not use a regular function?

And there shouldn't be any need to specify an HTTP version.
Post Reply