Hallo,
Bin gerade dabei, mit Delphi, Daten im Azure BlobStorage Container abzulegen. Hat wunderbar unter Windows. Unter Android bekam ich immer folgendes Response:
Code:
<?
xml version="1.0" encoding="utf-8"?>
<Error>
<Code>AuthenticationFailed</Code>
<Message>Server failed to authenticate the request.
Make sure the value of Authorization header is formed correctly including the signature.'#012'
RequestId:da3048cd-101e-00d0-35d2-1db77c000000'#012'Time:2018-07-17T13:34:42.8089900Z</Message>
<AuthenticationErrorDetail>The Date header in the request is incorrect.</AuthenticationErrorDetail>
</Error>
Wie gesagt unter Windows überhaupt keine Probleme. Also alles bis runter auf
unit System.Net.HttpClient.Android; Methode
procedure TAndroidHTTPRequest.AddHeader(const AName, AValue: string); gedebuggert.
Dadrin wird jeder Value eines Header Parameters getrimmt. Hat zur folge, das der Header Parameter "x-ms-date" geändert wird und Azure die Authentifizierung verweigert. Konnte es mit Fiddler nachweisen und als ich die gleichen Änderungen mit Windows anstelle, ist auf dort kein Zugriff möglich.
Der HTTP Header unter
Win32:
Win32
GET http://autocompez.blob.core.windows....ist&timeout=30 HTTP/1.1
Connection: Keep-Alive
Authorization: SharedKey ...
User-Agent: Embarcadero URI Client/1.0
x-ms-date: Wed, 18 Jul 2018 12:06:33 GMT
x-ms-version: 2014-02-14
Host: autocompez.blob.core.windows.net
Android:
GET http://autocompez.blob.core.windows....ist&timeout=30 HTTP/1.1
x-ms-date: Wed,18 Jul 2018 12:05:41 GMT
x-ms-version: 2014-02-14
User-Agent: Embarcadero URI Client/1.0
Authorization: SharedKey ...
Host: autocompez.blob.core.windows.net
Connection: Keep-Alive
Accept-Encoding: gzip
Der Unterschied liegt in einem einzigen Leerzeichen, nach dem Wochentag.
Code:
x-ms-date: Wed, 18 Jul 2018 12:06:33 GMT
x-ms-date: Wed,18 Jul 2018 12:05:41 GMT
Meine Frage jetzt, hat dies auch schon jemand gehabt und / oder warum werden die Values getrimmt?