Jamie Hartnoll
Jamie Hartnoll

Reputation: 7361

HttpWebRequest received error 406 and Fiddler seems to have confused things

I am using the following code....

Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(PostingUrl), HttpWebRequest)
myHttpWebRequest.Method = "POST"
myHttpWebRequest.Headers.Add("Authorization", "Bearer " & RSettings.access_token)
myHttpWebRequest.Headers.Add("Accept-Version", "2")
myHttpWebRequest.ContentType = "application/json; charset=UTF-8"
myHttpWebRequest.Accept = "application/json"
' myHttpWebRequest.Proxy = Nothing ' ** SEE NOTES ON THIS LINE **

Dim Byt As Byte() = Encoding.UTF8.GetBytes(DataString)
Using stream = myHttpWebRequest.GetRequestStream()
    stream.Write(Byt, 0, Byt.Length)
End Using

Using myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
    Using srRead As New StreamReader(myHttpWebResponse.GetResponseStream())
        ListingResponse = srRead.ReadToEnd()
    End Using
End Using

Where:

If I run my code from Visual Studio (localhost) it returns

The remote server returned an error: (406) Not Acceptable.

Trying to figure out why, I opened Fiddler hoping I could inspect content types and figure out the problem, but the response error changed to:

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

(I'm guessing from this error that I also have an issue with my Auth key, but that's a separate subject I think.)

After a bit of Googling and S/O pages I found two suggestions:

  1. Tools > Fiddler Options > HTTPS and uncheck "Capture HTTPS CONNECTs"
  2. Add the commented out line: myHttpWebRequest.Proxy = Nothing

If I make any of those changes, I get back to my Error 406 that I get without Fiddler running.

However, if I add myHttpWebRequest.Proxy = Nothing line added, I can no longer see the Tunnel to http://reverb.com:443 Log entry in Fiddler, there's no record of a request to Reverb.com so I can't inspect anything.

I'm now very confused about what I'm doing, and I guess haven't actually made any progress at all!

By the way... all this is an attempt to recreate the cURL example on the Rever docs page here:

https://dev.reverb.com/docs/create-a-listing

I have also been discussing this issue here:

https://dev.reverb.com/v1.0/discuss/57bb2ca0aa8f760e004588cf

Upvotes: 0

Views: 1345

Answers (1)

Jamie Hartnoll
Jamie Hartnoll

Reputation: 7361

Argh... well, my confusing over Fiddler still stands but the 406 error was caused by this:

myHttpWebRequest.Headers.Add("Accept-Version", "2")

Should have been

myHttpWebRequest.Headers.Add("Accept-Version", "2.0")

How simple!!

Upvotes: 1

Related Questions