AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kommunikation mit Windows WCF Dienst

Ein Thema von jus · begonnen am 30. Mär 2016 · letzter Beitrag vom 2. Apr 2016
Antwort Antwort
jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#1

Kommunikation mit Windows WCF Dienst

  Alt 30. Mär 2016, 15:58
Hallo,

ich soll einen Request bei einem fremden Windows WCF Dienst machen und habe folgenden Javas Beispielcode, das von einer HTML Datei aufgerufen wird:
Code:
    $.ajax({
        url: url,
        type: "POST",
        contentType: "application/json;encoding=utf-8",
        crossDomain: true,
        data: reqdata,
        success: success,
        error: error
    });
Es werden JSON Daten zum WCF Dienst hingeschickt und es werden JSON Daten zurückgeliefert.

Muß ehrlich zugeben, dass ich bisher keine Erfahrung mit Windows WCF Dienst gehabt habe. Ich habe folgenden Code versucht, leider funktionert es nicht ganz.
HttpPostURL('http://localhost:1201/testsample/POS/json/sign', Params, st); Wie kann man sowas in Delphi 2007 nachbauen?

Lg,
jus
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Kommunikation mit Windows WCF Dienst

  Alt 1. Apr 2016, 16:06
Hallo,

wollt mich noch kurz melden, für die Leute die wie ich noch nie mit Microsoft WCF gearbeitet haben, habe es nun hingekriegt. Ist einfacher als ich es gedacht habe. Anscheinend habe ich das Tutorial "Introduction to WCF Programming in Delphi" bei Embarcadero nicht gründlich genug durchgelesen. Ich dachte nämlich, dass es eine Anleitung rein für Delphi .NET war. Dabei wurde im unteren Teil des Artikels Delphi 2007 explizit erwähnt. Die ganze Arbeit macht einfach der "WSDL Importer" siehe obiger Embaracadero Artikel. Hat zumindest bei mir auf Anhieb funktioniert. Somit braucht man sich nicht mehr um die Kommunikation kümmern.

Interessant wäre es trotzdem, wie man selber über ein http POST die JSON-Daten wie AJAX (siehe erster Beitrag) zum Server raufschickt. Vielleicht weiß da jemand Rat.

Lg,
jus

Geändert von jus ( 1. Apr 2016 um 16:09 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Kommunikation mit Windows WCF Dienst

  Alt 1. Apr 2016, 19:42
Interessant wäre es trotzdem, wie man selber über ein http POST die JSON-Daten wie AJAX (siehe erster Beitrag) zum Server raufschickt. Vielleicht weiß da jemand Rat.
Zum Beispiel mit der Indy TIdHTTP Komponente und diesem Code.

https://mikejustin.wordpress.com/201...-6-https-post/
Michael Justin
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Kommunikation mit Windows WCF Dienst

  Alt 1. Apr 2016, 21:00
hallo Mike,

vielen Dank für die Antwort. Ich habs gleich ausprobiert, funktioniert leider nicht. Es kommt die Fehlermeldung "HTTP/1.1 400 Bad Request".

lg,
jus
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Kommunikation mit Windows WCF Dienst

  Alt 1. Apr 2016, 22:17
Was sagt Fiddler dazu?
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Kommunikation mit Windows WCF Dienst

  Alt 2. Apr 2016, 01:47
ok, nun geht es. War wieder Mal mein Fehler. Hatte im JSON einen Abschreibfehler gehabt.
@mjustin Danke nochmals für den Code!

Habe den folgenden Code geringfügig an Delphi 2007 angepaßt, damit es compiliert.

Delphi-Quellcode:
program JSONPostExample;

{$APPTYPE CONSOLE}

uses
  IdHTTP, IdGlobal, SysUtils, Classes;

var
  HTTP: TIdHTTP;
  RequestBody: TStream;
  ResponseBody: string;
  s: String;
begin
  HTTP := TIdHTTP.Create;
  try
    try
      s := '{"ftID":"TESTID","cbD":"1"}';
      writeln(s);
      RequestBody := TStringStream.Create(s);
      try
        HTTP.Request.Accept := 'application/json';
        HTTP.Request.ContentType := 'application/json'; //<------ mußte bei mir zwingend drinstehen, damit es funktioniert!!!
        HTTP.Request.ContentEncoding:= 'utf-8';

        ResponseBody := HTTP.Post('http://localhost:1201/testsample/POS/json/sign', RequestBody);

        WriteLn(ResponseBody);
        WriteLn(HTTP.ResponseText);
      finally
        RequestBody.Free;
      end;
    except
      on E: EIdHTTPProtocolException do
      begin
        WriteLn(E.Message);
        WriteLn(E.ErrorMessage);
      end;
      on E: Exception do
      begin
        WriteLn(E.Message);
      end;
    end;
  finally
    HTTP.Free;
  end;
  ReadLn;
  ReportMemoryLeaksOnShutdown := True;
end.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz