2017-05-24 3 views
0

Ich versuche, httpGet mit Token verwenden, die illegale Zeichen im Header haben. Ich habe Fehler 401 in Java, und in Postman gelang es mir, Antwort zu bekommen.HTTP-Anfrage-Header mit Sonderzeichen Java

HttpGet httpGet = new HttpGet(SF_DEFAULT_HOST + REPORT_URL); 
header.add("Authorization", "OAuth " + accessToken);; 
JSONObject jsonUserInfo = WebClient.fetch(httpGet); 

in diesem Fall das Token gleich => 00D90000000sYg0! ARkAQGLOKJhVhT3O_7JnIZTP3UGctmzW9jXa3HtD6li8bS_eEwhhQTRfsC_ayoQLgcST6fX6p6jU49MQpe.lGEZxFLuzccLn

Picture from postman with request success response.

Bild von Postbote mit Anfrage Erfolgsantwort.

+0

Sie müssen Ihr Token base64, damit es für das HTTP-Protokoll geeignet ist. –

+0

@JerryChin Ich versuchte, auch wenn Sie auf Postman-Anfrage sehen, es ist nod codiert , auch einige der Benutzer, die Token ohne spicical Charakter haben, funktioniert es gut. – Asad

+0

Zuerst senden Sie GET in Java, dann sollten Sie 401 erhalten, senden Sie jetzt Ihre Authentifizierung Header mit based64 Token, sehen, was passiert, vergessen Sie nicht, das Token auf der Serverseite zu entschlüsseln! –

Antwort

0

Sie versuchen, das Token mit Nicht-US-ASCII-Zeichen zu übergeben, dies ist der Grund für den Fehler, vor dem Sie stehen. Sie müssen den Header codieren, bevor Sie ihn in die Anfrage einfügen.

Java-Klasse für die Kodierung ist java.net.URLEncoder.

Hinweis: RFC 2616 besagt, dass Sie US-ASCII nur in HTTP-Headern verwenden können. Andere Zeichen müssen codiert werden.

In C# gibt es eine direkte Methode zum Hinzufügen von Token mit Nicht-US-ASCII-Zeichen.

HttpClient queryClient = neu HttpClient();

queryClient.DefaultRequestHeaders.TryAddWithoutValidation ("Authorization", "Bearer" + AuthToken);

Verwandte Themen