Comment utiliser la forme JSL des données WEB "POST" ?Après avoir appris à utiliser JMP pour télécharger des données de pages Web, ma mère aime maintenant utiliser JMP pour télécharger des données de pages Web, mais il est plus difficile de traiter la page Web de POST.
Obtenez l'aide d'un expert : comment télécharger des données à l'aide de JSL de la manière suivante :

POST http://listxbrl.sse.com.cn/companyInfo/showBalance.do HTTP/1.1
Host: listxbrl.sse.com.cn
Connection: keep-alive
Content-Length: 54
Accept: */*
Origin: http://listxbrl.sse.com.cn
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://listxbrl.sse.com.cn/companyInfo/toCompanyInfo.do?stock_id=600007&report_period_id=5000
report_year=2018&stock_id=600007&report_period_id=5000
Je peux le faire avec VBA.
Merci!
Re : Comment utiliser la forme JSL des données WEB "POST" ?Merci pour l'aide des experts, de sorte que j'ai appris beaucoup de compétences. Merci !Re : Comment utiliser la forme JSL des données WEB "POST" ?En utilisant l'exemple dans le fil, vous voudriez quelque chose comme:
query = Associative Array();
query["report_year"] = 2018;
query["stock_id"] = 600007;
query["period_id"] = 5000;
request = HTTP Request(
Url( "http://listxbrl.sse.com.cn/companyInfo/showBalance.do" ),
Method( "POST" ),
Form( Fields(query) )
);
request << Send;
Le message du formulaire est là depuis le début.
Il contient des sous-parties Champs et Fichiers. Les deux sont des tableaux associatifs.
Dans le cas "Champs", il s'agit de paires nom/valeur où la valeur peut être soit un caractère, soit une liste de caractères.
Dans le cas "Fichiers", il s'agit de paires nom/valeur où la valeur peut être soit un nom de fichier, soit une liste de noms de fichiers.
Si seuls "Champs" sont utilisés, l'en-tête de la requête est automatiquement défini sur application/x-formulaire-www-urlencodé
Si "Fields" et "Files" (ou simplement "Files") sont utilisés, l'en-tête de la requête est automatiquement défini sur multipart/form-data.
Je mettrai également à jour le fil avec ces informations.
Re : Comment utiliser la forme JSL des données WEB "POST" ?parfait.
Merci Ryan_Gilmore !

Re : Comment utiliser la forme JSL des données WEB "POST" ?Ces lignes de code,
query = Associative Array();
query["report_year"] = 2018;
query["stock_id"] = 600007;
query["report_period_id"] = 5000;
sont utilisés pour construire la liste des paramètres de requête dans l'URL, par exemple
report_year=2018&stock_id=600007&report_period_id=5000
Dans le code original que j'ai fourni, le code avait
query["period_id"] = 5000;
qui aurait donné une liste de paramètres de requête incorrecte de
report_year=2018&stock_id=600007&period_id=5000
Re : Comment utiliser la forme JSL des données WEB "POST" ?Je viens d'essayer d'utiliser le VBA d'origine, en continuant avec l'ID 5000, et en pouvant toujours télécharger.
"report_year=2018&stock_id=600007&report_period_id=5000"
Re : Comment utiliser la forme JSL des données WEB "POST" ?JE VOIS.

Re : Comment utiliser la forme JSL des données WEB "POST" ?Je remarque qu'un des paramètres est incorrect. Le code que j'ai suggéré avait "period_id" plutôt que "report_period_id" comme indiqué dans votre message d'origine. Il est possible que cela contribue au message "500 Internal Server Error".
Re : Comment utiliser la forme JSL des données WEB "POST" ?obtenir "DATA" de thêta :
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\ !"> http://www.w3.org/1999/xhtml\ !"> <meta http-equiv="\!"Content-Type\!"" content="\!"text/html;" jeu="" de="" caractères="utf-8\ !"" />
……
"Re : Comment utiliser la forme JSL des données WEB "POST" ?Ma connaissance de l'approche JMP est limitée.
Je ne peux qu'imiter. Toujours aucun résultat.

Merci Ryan_Gilmore !
Re : Comment utiliser la forme JSL des données WEB "POST" ?Une fois la demande créée. vous devez ensuite émettre la commande Envoyer, par exemple
data = request << Send;
If( request << IsSuccess,
json_data = Parse JSON( data );
);Re : Comment utiliser la forme JSL des données WEB "POST" ?1 Merci serge !
Cette approche n'a toujours pas fonctionné.
Il semble que cette forme de méthode POST, l'application JMP ne l'est pas encore.

Re : Comment utiliser la forme JSL des données WEB "POST" ?Je pense que ce qui suit pourrait être proche de ce dont vous avez besoin,
request_headers = Associative Array();
request_headers["Content-type"] = "application/x-www-form-urlencoded";
query = Associative Array();
query["report_year"] = 2018;
query["stock_id"] = 600007;
query["period_id"] = 5000;
request = HTTP Request(
Url( "http://listxbrl.sse.com.cn/companyInfo/showBalance.do" ),
Method( "POST" ),
Headers( request_headers ),
QueryString( query )
);
Re : Comment utiliser la forme JSL des données WEB "POST" ?Vous trouverez ci-dessous le code VBA, qui peut être téléchargé pour obtenir les données de la page.
Mais je n'ai toujours pas réussi à le convertir en code JSL.

S'il vous plaît donnez-moi de l'aide. Merci beaucoup!
VBA:
Sub Main()
Dim strText As String
With CreateObject("MSXML2.XMLHTTP")
.Open "POST", "http://listxbrl.sse.com.cn/companyInfo/showBalance.do", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.Send "report_year=2018&stock_id=600007&report_period_id=5000"
strText = .responsetext
Debug.Print strText
End With
Cells(1, 1) = strText
End Sub
Re : Comment utiliser la forme JSL des données WEB "POST" ?j'ai cherché-
Méthode("POST")
dans le fichier d'aide, mais n'a trouvé aucun code similaire.