Bonjour,
développant une app Android, je cherche à simuler un comportement sur une page web. J'ai trouvé Jsoup qui fonctionne très bien, je parviens à me connecter, récupérer les cookies et changer de page en utilisant ces derniers.
Mon problème est lorsque je veux simuler une action sur un bouton de type submit. Il est compris dans une balise form avec méthode post.
Le souci est que ma balise form contient beaucoup d'infos, et que je ne suis pas sûr de les mettre comme il faut.
Voici le code HTML :
Et voici mon code JAVA :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
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 <form name="addToCartForm" method="post" action="/catalog/skuRouter.do" id="mainSkuForm"> <div id="sku" class="newsku"> <div id="skuTop" class="section nopad"> <div class="section hproduct"> <div class="col1"> <div class="product_image photo"> <div id="skuValue" style="display:none">187057</div> <div class="product_image photo"> <img src="/pictures/fr-fr/bsd/sk/lg/187057_sk_lg.jpg" alt="" id="mainSkuProductImage" border="0" /> </div> <ul> <li class="empty"></li> </ul> </div> </div> <div class="col2"> <div id="skuHeading"> <h1 class="fn">Carton de 5 Ramettes 500 feuilles OD everyday 3000 A4</h1> <div class="item_sku"> Référence 187057 Code Article 187057 </div> <div id='longBulletTop'> <i></i> <ul> </ul> </div> <div id="skuAdTile"></div> <div class="f_left"> <ul class="i99"> <li class="empty"> </li> </ul> </div> </div> <div id="skuActions" class="section"> <div class="icons f_left"> <ul class="sku_icons"> <a href="/catalog/iconlegend.do" class="" onclick="window.open('/catalog/iconlegend.do','','height=550,width=500,toolbars=no,resize=auto,scrollbars=yes'); return false"></a> <li class="empty"></li> </ul> </div> <div id="purchaseBlock" class='sku_column'> <div id="productPurchase" class="sku_column_inside"> <div class="tax_mode"> <div class="list_price"> <table class="rebate" cellspacing="0"> </table> <div class='pricing_block'> <dl class='your_price '> <dt class='price_title '> Votre prix : </dt> <dd class="price"> <span class="price_amount"> 25,59 </span> <span class="uom">/ BX </span> </dd> </dl> </div> </div> <div class="clear"></div> </div> <div id="skuPageActions"> <ul class="quantity_box big_a"> <li class="quantity"> <span class="qty" >Qté</span> </li> <li> <input type="text" name="entryFormList[0].qty" maxlength="4" size="3" autocomplete="" min="0" max="" value="" id="mainqtybox" class="input focus"/> </li> <li class="cart"> <div class="b1"> <input type="submit" value="Ajouter au Panier" name="cmd_addSKU.button.INDEX[0]" class="button " title="Ajouter au Panier" /> </div> </li> <li class="list"> <div class="b2"><input type="submit" value="Ajouter à la liste d'achats" name="cmd_addCSL.button.INDEX[0]" class="button cslRequestDialog" title="Ajouter à la liste d'achats" /></div> </li> </ul> <input type="hidden" name="iref1" value="SKUPG"> <input type="hidden" name="iref2" value="0012"> <input type="hidden" name="id" value="187057"> <input type="hidden" name="entryFormList[0].selected" value="on"> <input type="hidden" name="pr" value=""> <input type="hidden" name="queryString" value="id=187057"> <input type="hidden" name="entryFormList[0].sku" value="187057" id="skuId"> <input type="hidden" name="entryFormList[0].customerEnteredSku" value="187057" id="customerEnteredSku"> <input type="hidden" name="comparisonCount" value="0" id="comparisonCount" /> <input type="hidden" name="cartEntryId" value=""> </div> <input type="hidden" name="trackingCategory" value="accountloginAccountDisplay"/> <div class="also_available"> <ul class="sku_icons"> <li class="empty"> </li> </ul> </div> </div> <input type="hidden" name="from" value='/catalog/catalogSku.do?id=187057&pr=' /> </div> <div id="availabilityShipping" class="sku_column"> <div class="sku_column_inside"> </div> </div> </div> </div> </div> </div> </div> <input type="hidden" name="useSelected" value="false" /> <input type="hidden" name="iref1" value="SKUPG"> <input type="hidden" name="iref2" value="0012"> <input type="hidden" name="compareEmptyReturn" value="specialOneUseFrom" /> </form>
Je demande donc votre aide: est-ce que je passe trop d'infos, doivent-elles être dans un ordre spécifique.. Je suis un peu perdu là-dessus.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Document doc = Jsoup.connect(url + "/catalog/skuRouter.do") .data("entryFormList[0].qty", "1") .data("cmd_addSKU.button.INDEX[0]", "Ajouter au Panier") .data("iref1", "SKUPG") .data("iref2", "0012") .data("id", "187057") .data("entryFormList[0].selected", "on") .data("pr", "") .data("queryString", "id=187057") .data("entryFormList[0].sku", "187057") .data("entryFormList[0].customerEnteredSku", "187057") .data("comparisonCount", "0") .data("cartEntryId", "") .data("trackingCategory", "accountloginAccountDisplay") .data("from", "/catalog/catalogSku.do?id=187057&pr=") .data("useSelected", "false") .data("iref1", "SKUPG") .data("iref2", "0012") .data("compareEmptyReturn", "specialOneUseFrom") .cookies(loginCookies) .post();
P.S : même si htmUnit est 100* mieux je ne cherche pas à changer de lib pour l'instant, j'aimerai bien comprendre.
En vous remerciant d'avance.