File-get-contents failed to open stream Unauthorized

36,539

Solution 1

In your url try:

http://user:password@site/ 

(append whatever the rest of the URL for your API should be)

Solution 2

Just put the user info into the URL:

$url = 'http://user:[email protected]/foo/bar/whatever';

Solution 3

The 401 Unauthorized status code means that you should have authenticated, but that you haven't, or that you have authenticated with the wrong credentials. It is most commonly used when using HTTP authentication, which is authentication built into the HTTP protocol, and therefore is universal, not only for HTML documents, but for anything transfered over the HTTP protocol.

To authenticate with HTTP authentication, simply add username:password@ before the hostname in the URL. For instance:

http://foobar:[email protected]/passwordprotected/

This would request the /passwordprotected/ directory from example.com with the username foobar and the password mysupersecretpassword.

It's not any worse than that. :)

Share:
36,539
Aaron
Author by

Aaron

I'm a software developer and architect with hands-on experience in developing enterprise software solutions. I've previously worked as CTO in multiple companies including one of my own providing software solutions to SME and SMB's. Over the past few years, I've had the opportunity to work in the global diamond industry which has brought me to my current venture at BidGemmer.

Updated on February 02, 2020

Comments

  • Aaron
    Aaron over 4 years

    I am trying to use file_get_contents.I have made sure that allow_url_fopen is enabled in php.ini. As of now it is telling me:

    [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized

    All I'm doing is the following, which I can access through browser without a problem.

    $url=('http://site/@api/users/[email protected]/properties');
    $xmlString=file_get_contents($url);
    

    I believe this is an authentication issue but not sure how I can supply the proper credentials from within the script itself. Any ideas would be greatly appreciated.