Salut à tous,
J'ai une application qui se connecte au webService d'Amazon et j'utilise une dll afin d'accéder aux méthodes et propriétés de recherche, etc.
Je suis relativement très peu versé dans le concept de classe. J'ai un peu de difficulté à m'y retrouver.
Voilà mon problème : lorsque mon application utilise cette dll afin de me connecter au webservice d'Amazon, lorsqu'il n'y a pas de serveur proxy, tout fonctionne. Cependant, lorsqu'il y a un proxy, il me demande l'autorisation. J'ai une idée des infos que je dois lui fournir, soit quelque chose du genre :
Mais comme je passe par diverses classes, je n'ai pas accès directement à l'instance de mon wevbservice et aucune propriété de proxy n'est définie à l'intérieur des mes classes. Alors, j'aimerais savoir où je peux insérer ces données de proxy. Je vous donne en gros ce que mon dll a comme classes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 WebProxy proxy = new WebProxy(monProxyIP:80, true); proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; monwebservice.Proxy = proxy; monwebservie.Credential = System.Net.CredentialCache.DefaultCredentials;
1. Classe request, la classe de base pour toutes les requêtes. C'est ici que l'objet du webservice est instancié. Cette classe ressemble à quelque chose comme :
2. J'ai une deuxième classe qui dérive de la première et qui effectue sur l'objet créé par la première classe des requêtes sur le site d'Amazon. Elle ressemble à quelque chose de ce genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 using System; using System.Data; using AmazonFR.WebServices; namespace AmazonFR { public abstract class Request { protected AWSECommerceService amazonService = new AWSECommerceService(); #region Properties /// <summary> /// Amazon Web Services Developer Subscription Id /// </summary> protected string subscriptionId; /// <summary> /// Gets or sets the Amazon Web Services Developer Subscription Id /// </summary> public string SubscriptionId { get{return subscriptionId;} set{subscriptionId = value;} } /// <summary> /// Amazon Associate Tag /// </summary> protected string associateTag = "webservices-20"; /// <summary> /// Gets or sets the Amazon Associate Tag /// </summary> public string AssociateTag { get{return associateTag;} set{associateTag = value;} } #endregion /// <summary> /// Abstract constructor /// </summary> public Request() { } } }
Alors, vous comprendrez qu'à partir de ma form, je n'ai pas accès à l'objet amazonService créé par la classe Request et donc je ne peux à partir de là établir les conditions du proxy. Où puis-je le faire ? Dans la première classe, dans la deuxième ? Je vous avoue que j'en perds mon latin (le pire c'est que je ne l'ai jamais eu...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 using System; using System.Data; using AmazonFR.WebServices; namespace AmazonFR { /// <summary> /// A request providing the ability to search and browse Amazon (using ECS4 operation ItemSearch) /// </summary> public sealed class SearchRequest: Request { // ItemSearch necessary members private ItemSearch itemSearch = new ItemSearch(); private ItemSearchRequest itemSearchRequest = new ItemSearchRequest(); private ItemSearchResponse itemSearchResponse; #region Search Parameters ... #endregion /// <summary> /// Initializes a new instance of the AmazonFR.SearchRequest class with no arguments. /// </summary> public SearchRequest() { } /// <summary> /// Sends a search request to Amazon ECS with the non-null search parameters. The result is returned as a AmazonFR.WebServices.Items. /// </summary> public Items Search(bool useCache) { // Setting the basic Request parameters itemSearch.SubscriptionId = subscriptionId; itemSearch.AssociateTag = associateTag; // Request Parameters itemSearchRequest.Keywords = this.keywords; itemSearchRequest.ItemPage = this.itemPage; itemSearchRequest.SearchIndex = this.searchIndex.ToString(); itemSearchRequest.Actor = this.actor; itemSearchRequest.Artist = this.artist; ... itemSearchRequest.ResponseGroup = new string [] { "Large"}; itemSearch.Request = new ItemSearchRequest[1] {itemSearchRequest}; if (useCache) { ... else { try { itemSearchResponse = amazonService.ItemSearch(itemSearch); } catch (Exception e) { throw new Exception ( e.ToString() ); } } Items[] itemsResponse = itemSearchResponse.Items; // Verify the response if ( itemsResponse == null ) throw new Exception ( "Server Error - no response received" ); if ( itemsResponse[0].Request.Errors != null ) throw new Exception( itemsResponse[0].Request.Errors[0].Message ); if ( itemsResponse != null ) { Items items = itemsResponse[0]; if ( items != null ) { return items; } } return null; } } }
Merci à l'avance de m'éclairer.
iDaaX
![]()
Partager