So funktioniert JustAnswer:
  • Fragen Sie einen Experten
    Tausende Experten in über 200 Kategorien.
  • Erhalten Sie eine professionelle Antwort
    Per E-Mail oder sofortiger Benachrichtigung, während Sie auf unserer Website warten.
    Stellen Sie ggf. weitere Anschlussfragen.
  • 100%ige Zufriedenheit garantiert
    Bewerten Sie die erhaltene Antwort.
Stellen Sie Ihre Frage an IT-Fachinformat...
IT-Fachinformatiker
IT-Fachinformatiker, Systemadministrator
Kategorie: Computer
Zufriedene Kunden: 6971
Erfahrung:  Software Entwicklung, Projekt Erfahrung, Windows-Netzwerke, Linux-Netzwerke, Windows/Linux-Server
32504664
Geben Sie Ihre Frage in der Kategorie Computer hier ein
IT-Fachinformatiker ist jetzt online.

idhttp1.Post(trim(Serverinfo.Fieldget(serverU)),source,response); Memo3.

Kundenfrage

idhttp1.Post(trim(Serverinfo.Fieldget('serverU')),source,response);
Memo3.Lines.text := idhttp1.Response.location;

Idhttp1.Response.location bleibt ist leer
Gepostet: vor 6 Jahren.
Kategorie: Computer
Experte:  IT-Fachinformatiker hat geantwortet vor 6 Jahren.
Sehr geehrter Kunde,

um welche Programmiersprache handelt es sich? Zufälligerweise C++ oder Delphi?

LG Günter

Verändert von IT-Fachinformatiker am 09.02.2011 um 20:00 Uhr EST
Experte:  IT-Fachinformatiker hat geantwortet vor 6 Jahren.
DIESE ANTWORT IST GESPERRT!
Sie können diese Antwort anzeigen lassen indem Sie hier klicken um sich zu registrieren oder anzumelden und danach $3 zahlen.

Kunde: hat geantwortet vor 6 Jahren.

Hallo Günter,

 

das ganze ist in Delphi 6 geschrieben.

 

ich habe den ganzen Quellcode einmal reinkopiert.

 

procedure TForm1.Button1Click(Sender: TObject);
var

Source : TMemoryStream;
Response : TStringStream;
Zeile : String;
i : Integer;

begin

Response := TStringStream.Create('');
Source := TMemoryStream.Create;
Source.LoadFromFile('Thomas_Adresse.xml');
Try

idhttp1.Request.ContentLength := 1330;
IdHttp1.Request.ContentType := 'application/vnd.de.mobile.seller-v2.0+xml';
IdHttp1.Request.ExtraHeaders.Add('X-MOBILE-SELLER-TOKEN:' +trim(Serverinfo.FieldGet('Sellert1')));
IdHttp1.Request.Username := '';
Idhttp1.Port := 80;

Idhttp1.Post(trim(Serverinfo.FieldGet('ServerU')),Source,Response);
Memo3.Lines.Text := idhttp1.Response.Location;
// Memo2.Lines.text := idhttp1.Response.ExtraHeaders;

Except
Memo1.lines.text := idhttp1.ResponseText;
Response.free;
end;
end;

 

in ServerU steht die URL drinnen / Die Url ist in diesem Fall

http://sandbox.mobile.de/seller-api/sellers

 

Mein Problem ist, das Location leer zurückkommt.

Ich habe keine Ahnung warum.

 

 

Experte:  IT-Fachinformatiker hat geantwortet vor 6 Jahren.
Hallo, also Delphi habe ich leider nicht dafür aber ein Beispiel welches Sie einmal probieren sollten und Ihnen helfen kann, die Zusammenhänge beim HTTP-Protokoll besser zu verstehen:

function TForm1.send_request(url: string) : boolean;
var
html : string;
IdHTTP1 : TIdHTTP;
begin
// prepare GUI widgets
Memo1.Lines.Clear;
Edit4.text := url;

IdHTTP1 := TIdHTTP.Create(Form1);

// prepare Athentification Header
IdHTTP1.Request.Username := Edit2.text;
IdHTTP1.Request.Password := Edit3.text;
IdHTTP1.Request.BasicAuthentication := true;

// Send HTTP-GET-Request
html := IdHTTP1.Get(url);

// post reply to GUI widgets
Memo1.Lines.Add(html);
Edit5.Text := IdHTTP1.ResponseText;

// return True on HTTP 200 (OK)
send_request := (IdHTTP1.ResponseCode = 200);

IdHTTP1.Destroy;
end;

Meine Vermutung ist, das es am Trim liegt den Sie verwenden evtl. schnippeln Sie da zu viel ab oder haben eine zu geringe Datenmenge im Contentindex angegeben.

gehört dazu:

procedure TForm1.Button1Click(Sender: TObject);
var
url : string;
I : integer;
meta : string;
portname : string;
portstate : string;
begin
url := 'http://' + Edit1.Text + '/ov.html';
if (ComboBox1.ItemIndex > 0) and (ComboBox2.ItemIndex > 0) then
url := url + '?' + 'cmd=1&p='+IntToStr(ComboBox1.ItemIndex) +
'&s='+inttostr(ComboBox2.Itemindex - 1);

// send HTTP-GET Request, and parse the HTML Respons
if send_request(url) then
begin
Memo2.Lines.Clear;
// analyse HTML response
for I := 0 to Memo1.Lines.Count - 1 do
begin
if (pos('powerstate', Memo1.Lines) > 0) then
begin
meta := Memo1.Lines;
delete(meta, 1, pos('content="', Memo1.Lines)+8);
portname := copy(meta, 1, pos(',', meta)-1);
portstate := copy(meta, pos(',', meta)+1, 1);
Memo2.Lines.Add('Name: "' + portname + '", State: "'+portstate+'"');
end;
end;
end;

end;

Ich würde also den Quelltext so verändern, das "er" erst mal den Text holt auf einfache Weise d.h. das Trim mal genau beobachten und am besten Haltepunkte setzen, so das Sie Zeile für Zeile durchtesten können dann müssten Sie recht schnell den Fehler entdecken ich kann es wie gesagt nicht ausprobieren. Leider.

LG Günter
Kunde: hat geantwortet vor 6 Jahren.
Erneut posten: Qualität der Antwort:.
bitte sortieren Sie die Frage bei Programmierung und einem Delphi Programmierer ein, damit der gegenüber mein anliegen auch testen kann
Experte:  IT-Fachinformatiker hat geantwortet vor 6 Jahren.
Hallo, ja das wäre in der Tat besser wenn jemand es auch testen könnte. Zu diesem Zweck gebe ich die Frage wieder frei (bitte NICHT AKZEPTIEREN!). An alle anderen Experten: Wir benötigen einen Delphie 6 Programmierer der o.a. Quellcodes auch testen kann und der Kunde somit eine brauchbare und direkt umsetzbare Lösung erhält! Vielen Dank. Gruss Günter