zu erst das:
Ich nutze C++ (bcb 5), deshalb kann es sein, dass ich ein paar Synthaxfehler drinne habe, weil ich es nur jz kurz auf Delphi umändere - weil es ja ca. 0 C++ Foren gibt, wo man auch ma innerhalb von nen paar Jahren ne Antwort erhält...
ZUM eigtl Thema:
zwar ist das nicht der erste Schritt der Anmeldung @msn, aber der einzig interessante für mich, weil der Rest geht:
"Once you have done this you should open a connection with nexus.passport.com, on port 443. [...] After the connection has been established you should send a simple GET request to the server."
--> "GET /rdr/pprdr.asp HTTP/1.0\r\n\r\n"
so - jz gibt es ja verschiedene Möglichkeiten, das anzustellen:
1. (mit
Indy Komponente "TCPClient", verlinkt unter Intercept mit "IdConnectionInterceptOpenSSL1")
Delphi-Quellcode:
IdTCPClient1.Host := 'nexus.passport.com';
IdTCPClient1.Port := 443;
IdTCPClient1.Connect();
der Code des OnConnect-Events
IdTCPClient1.Write('GET /rdr/pprdr.asp HTTP/1.0\r\n\r\n');
der Code des OnWork-Events
AWorkMode: wmRead oder wmWrite - erklären brauch ich das nicht ^^
AWorkCount: int, entspricht der Menge der Empfangenen Bytes
Delphi-Quellcode:
if(AWorkMode = wmRead)
{
char *receive = new char[AWorkCount];
IdTCPClient1->ReadBuffer(receive,AWorkCount);
}
hier hab ich das Problem, dass es nicht mal in das OnWork-Event springt - warum weiß ich nicht... :/
<hr>
2.1 (mit
Indy Komponente "HTTP")
hier die einfachere Methode
Delphi-Quellcode:
IDHTTP1.Host := 'nexus.passport.com';
IDHTTP1.Port := 443;
IDHTTP1.Get('https://nexus.passport.com/rdr/pprdr.asp');
OnWork:
Delphi-Quellcode:
if(AWorkMode = wmRead)
{
char *receive = new char[AWorkCount];
IDHTTP1->ReadBuffer(receive,AWorkCount);
{sry für C++ - Synthax - er erstellt nen Buffer und lässt den halt füllen...}
}
jetzt springt er einmal in das Event, aber hat dort sensationelle NULL (->nil ^^) Bytes zu lesen... :/
2.2
Delphi-Quellcode:
{Host = '...'; Port = 443;}
String A := IDHTTP1.Get('https://nexus.passport.com/rdr/pprdr.asp');
-> A ist leer
2.3
Delphi-Quellcode:
{Host = '...'; Port = 443;}
IDHTTP1.Head('https://nexus.passport.com/rdr/pprdr.asp');
String A := IDHTTP1.ResponseText;
-> A == "200 OK"
Meine erste Frage: benutze ich überhaupt die richtigen Komponenten? Und wenn ja, was mach ich falsch? Meiner Meinung nach müssten alle 3 Methoden gehen
Danke,
Tom
PS: Anbei die Anleitung zum MSNP8 Protokoll - zumindest grob ^^