Azure Fonctions d'appel http post à l'intérieur de la fonction
Est-il possible de créer des HTTP(s) de la requête post à l'intérieur d'Azur Fonction? Je suis en train de créer un webhook qui est à l'écoute pour un service et lorsqu'il est déclenché alors son appel à un autre service au cours de HTTP à l'aide de post.
Mon code ressemble à ça:
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
BitbucketRequest data = await req.Content.ReadAsAsync<BitbucketRequest>();
//DO STH WITH DATA TO GET e.g. USER STORY ID
using(var client = new HttpClient()){
client.BaseAddress = new Uri("https://SOME_TARGETPROCESS_URL/api/v1");
var body = new { EntityState = new { Id = 174 } };
var result = await client.PostAsJsonAsync(
"/UserStories/7034/?resultFormat=json&access_token=MYACCESSTOKEN",
body);
string resultContent = await result.Content.ReadAsStringAsync();
}
return req.CreateResponse<string>(HttpStatusCode.OK,"OKOK");
}
Je suppose que le problème est qu'actuellement HttpRequestMessage occupe web socket et je ne peux pas créer de nouvelle Requête Http.
Les erreurs que j'ai trouvé dans les Exceptions de détails:
- La connexion sous-jacente a été fermée: Une erreur inattendue s'est produite lors de l'envoi.
- Impossible de lire les données de la connexion de transport: Une connexion existante a dû être fermée par l'hôte distant.
- Exception Socket Code D'Erreur : 10054
- Trouvé le problème, Par défaut, pas de prise en charge de TLS 1.2 a été activée (ce qui a été utilisé par le point de terminaison j'étais d'appel). Système.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
- Vous êtes correcte, ce qui a également travaillé pour moi!
Vous devez vous connecter pour publier un commentaire.
Il est certainement possible et le bloc de code suivant fonctionne très bien dans mon test de la fonction:
Il imprime HTML de google.com.
POST
fonctionne aussi: retourne l'Erreur 405 (Méthode Non Autorisée)!!1 de google.Peut-il que votre correspondant est en train d'échouer?
J'ai fait le post de HTTP à l'intérieur d'Azur Fonction de la façon:
Comme vous avez pu le deviner par le nom, je suis en utilisant cette fonction pour envoyer une requête POST vers un télégramme bot
Pour quelqu'un d'autre qui atterrit ici lors de la recherche pour HttpClient dans Azure fonctions.
https://docs.microsoft.com/en-us/azure/azure-functions/manage-connections
Je viens de passer quelques heures à moi-même en essayant d'obtenir que cela fonctionne. C'était en NodeJS.
La chose que j'ai compris, c'est que je apparemment nécessaire d'avoir un point de terminaison de l'exécution de HTTPS, et avec un certificat valide.
Ne sais pas si cela est documenté nulle part.