Seite 1 von 1

ReceiveHTTPMemory mit HTTPS und Self-signed Cert

Verfasst: 28.12.2015 13:28
von Wayne-C
Hallo PureBasic Community

Stimmt es dass ReceiveHTTPMemory() für eine https:// - URL nicht funktioniert wenn der Server ein self-signed (d.h. nicht gültiges) Zertifikat besitzt? Gibt es einen Workaround?

Danke & Grüsse
Wayne-C

Re: ReceiveHTTPMemory mit HTTPS und Self-signed Cert

Verfasst: 28.12.2015 13:35
von NicTheQuick
Ich wüsste jetzt kein Workaround.

Ich will aber noch etwas richtig stellen: "self-signed" heißt einfach nur "selbst signiert" und nicht "ungültig". Denn gültig und sicher ist es trotzdem, solange man der Domain vertraut.

Re: ReceiveHTTPMemory mit HTTPS und Self-signed Cert

Verfasst: 28.12.2015 14:17
von Wayne-C
Habe etwas zusammengebastelt, jetzt funktioniert es, einfach mit einem Umweg über das Filesystem...

So wär's schön:

Code: Alles auswählen

URL = "https://www.test.ch/"
Html.s = ""
*Buffer = ReceiveHTTPMemory(URL)
If *Buffer
	Size = MemorySize(*Buffer)
	Html = PeekS(*Buffer, Size, #PB_UTF8)
	FreeMemory(*Buffer)
EndIf
Debug Html
Nice to have wäre ein Parameter #PB_Ignore_BadCerts in ReceiveHTTPMemory:

Code: Alles auswählen

*Buffer = ReceiveHTTPMemory(URL, #PB_Ignore_BadCerts)
So funktioniert's:

Code: Alles auswählen

URL = "https://www.test.ch/"
Html.s = ""
TempPath.s = Space(#MAX_PATH)
GetTempPath_(#MAX_PATH, @TempPath)
TempFile.s = Space(#MAX_PATH)
GetTempFileName_(TempPath, "EXE-", 0, TempFile)
DeleteUrlCacheEntry_(URL)
If URLDownloadToFile_(0, URL, TempFile, 0, 0) = #S_OK
	If ReadFile(0, TempFile)
		Length.l = Lof(0)
		*MemoryID = AllocateMemory(Length)
		If *MemoryID
			ReadData(0, *MemoryID, Length)
			Html = PeekS(*MemoryID, Length, #PB_UTF8)
			FreeMemory(*MemoryID)
		EndIf
		CloseFile(0)
	EndIf
	DeleteFile(TempFile)
EndIf
Debug Html