6

The error I'm getting from Microsoft Graph API is this

error = {
  "code": "BadRequest",
  "innerError": {
    "date": "2017-04-10T19:37:08",
    "request-id": "973641dd-b150-4406-9f3b-fbcf6f7e5aa1"
  },
  "message": "The MIME type 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' requires a '/' character between type and subtype, such as 'text/plain'."
}

I'm able to successfully get from the endpoint https://graph.microsoft.com/v1.0/me/contacts while using POSTman however going the the scribe-java library OAuthRequest I receive this error.
My request is going to the url https://graph.microsoft.com/v1.0/me/contacts with 2 headers. Authorization -> Bearer [Token]
Content-Type -> application/json

Przemek
  • 3,855
  • 2
  • 25
  • 33
dpark
  • 69
  • 1
  • 7
  • Match the request headers you send with postman and your application. There are obviously differences. – Matt Clark Apr 10 '17 at 20:17
  • Hi Mark, Currently my POSTman and my request using the java library match. http://i.imgur.com/Pab6ejb.png this is what my post man request looks like. – dpark Apr 10 '17 at 20:31
  • Hi John, right click in your browser, and inspect the raw wire transfer. The server may also be expecting a User-Agent or something else. – Matt Clark Apr 10 '17 at 20:32
  • I don't see this in the request that postman makes. The only extra header that is included in postman is a "Postman-Token" -> "", but this should not make a different in making an API call to microsoft graph. – dpark Apr 10 '17 at 20:44
  • Maybe replace `*` with `*/*` in your request's MIME type. – Przemek Apr 10 '17 at 20:54
  • 1
    Could you post the code where you add the headers to your application request? I'm wondering if they're getting escaped or something. – piisexactly3 Apr 11 '17 at 19:53

3 Answers3

15

Try setting the "Accept" header explicitly in your request. POSTman may be defaulting you to [Accept=text/html, image/gif, image/jpeg, *; q=.2, /; q=.2]

Nick
  • 1,743
  • 6
  • 23
  • 38
  • 3
    Buddy you're genius, I spent past 3 hours with this and never thought of the `Accept`. Thank you. – Prav Mar 14 '18 at 22:12
4

Hi I was getting same error when I tried to create a new user on AzureAD with graph api. I solved my issue that I changed my accept header to "Accept":"text/html, application/json". For your information

hepcocukkalan
  • 51
  • 1
  • 2
0

It turns out the scribe-java library doesn't setup the request correctly. Switching to apache HttpClient and HttpGet resolved the issue for me.

dpark
  • 69
  • 1
  • 7
  • It's actually OpenJDK's HttpURLConnection class that sets up this invalid accept string. See https://bugs.openjdk.java.net/browse/JDK-8163921. – Emil Dec 11 '20 at 14:50