Bonjour,
je suis a la recherche d'un exemple d'un code me permettant d'attaquer un webservice sur une machine distante.
je n'ai pas besion du serveur
merci
Version imprimable
Bonjour,
je suis a la recherche d'un exemple d'un code me permettant d'attaquer un webservice sur une machine distante.
je n'ai pas besion du serveur
merci
Perso, j'utilise Delphp, il réagit comme un navigateur, il est donc prévu de pouvoir installer SSL... Mais ya d'autres solutions bien entendu... ;)
Peut-être pourrais-tu nous en dire un peu plus sur ce webservice.
Merci sub0, je vais regarder ton lien
en fait, je dois aller chercher des infos sur un serveur.
les infos dont je dispose sont:
PROXY : https://mysite.com:8444/soap
URI : https://mysite.com/SOAP/Customer
User : myuser
Password : mypwd
je n'ai pas de fichier WSDL
j'ai une liste de fonction (méthodes) disponibles:
- getinfouser
- getinfolist
...
avec la structure qu'elles retournent.
il faut que je developpe une interface en delphi7 qui récupère ces infos a la demande.
voila, tu en sait autant que moi 8O
merci de votre aide
A+
Avec les explications que tu m'as donné dans ton 2ème message, Delphp ne te servira à rien puisqu'il commande des scripts PHP... Pour utiliser SOAP, recherche avancée sur le forum donne : http://xml.developpez.com/soap.php
Et en particulier : http://dn.codegear.com/article/27319
rebonjour,
j'ai réussi a faire fonctionner un script perl
j'ai essayé de le retranscrire en delphi7:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #!/usr/bin/perl -w use strict; use Data::Dumper; use SOAP::Lite +trace => 'debug' ; use Crypt::SSLeay; my $soap_host = 'myserver.com'; my $soap_port = ':433'; my ($login, $password) = ('MyUserName', 'MyPWD'); my $soap = SOAP::Lite -> uri("https://$soap_host/SOAP/Session") -> proxy("https://${soap_host}${soap_port}/soap") -> on_fault( sub { my ($soap, $result) = @_; die ref $result ? $result-> faultstring : $soap->transport->status, "\n"; } ); my $soap_info_list = SOAP::Lite -> uri("https://$soap_host/SOAP/Customer") -> proxy("https://${soap_host}${soap_port}/soap") -> on_fault( sub { my($soap, $res) = @_; # die on any error die ref $res ? $res->faultstring : $soap->transport->status, "\n"; } ); my $session = $soap->SOAP::new(); my $session_id = $soap -> login($session, $login, $password) -> result; print "session_id => $session_id \n"; my $auth_info = { session_id => $session_id }; $auth_info = SOAP::Header->name(auth_info => $auth_info); my $res = $soap_info_list -> get_customer_list($auth_info, {offset => 0, limit => 2 }) -> result; print Dumper($res->{customer_list});
unité de déclaration SOAP
unité clickableCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 unit USOAP; interface uses InvokeRegistry, Types, XSBuiltIns, Classes; type // ************************************************************************ // // Namespace : urn:auth_info // ************************************************************************ // SoapStructHeader = class(TRemotable) private FLoging: WideString; FPassword: WideString; published property Loging: WideString read FLoging write FLoging; property Password: WideString read FPassword write FPassword; end; IMyService = interface(IInvokable) ['{89DF58FA-5E82-EF1B-6954-FC4177FCF692}'] function get_customer_list(const offset, limit: Integer): WideString; stdcall; end; function GetIMyService(Addr: string=''): IMyService; implementation uses SOAPHTTPClient; function GetIMyService(Addr: string): IMyService; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then exit; RIO := THTTPRIO.Create(nil); try Result := (RIO as IMyService); RIO.HTTPWebNode.WSDLView := nil; RIO.HTTPWebNode.Password:='myPWD'; RIO.HTTPWebNode.UserName:='myUserName'; RIO.HTTPWebNode.Proxy:='https://MyProxy/soap'; RIO.URL := Addr; finally if Result = nil then RIO.Free; end; end; initialization InvRegistry.RegisterInterface(TypeInfo(IMyService), 'urn:MyServiceIntf-IMyService', 'utf-8'); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IMyService), 'urn:#%operationName%'); end.
delphi me retourne un msg "paramètre incorrect" quand je clicke sur button1Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 ...... function TClientForm.GetService: IMyService; begin HTTPRIO1.URL := ComboBox1.Text; EdtUser.Text:= HTTPRIO1.HTTPWebNode.UserName ; EdtPWD.Text:= HTTPRIO1.HTTPWebNode.Password ; EdtProxy.Text:= HTTPRIO1.HTTPWebNode.Proxy; Result := HTTPRIO1 as IMyService; end; procedure TClientForm.Button1Click(Sender: TObject); begin { Teste le service } GetService.get_customer_list(0,2); end; ....
merci de votre aide
ou si vous avez un exemple similaire en Delphi7