2017-01-05 1 views
0

Question rapide que j'ai du mal à comprendre.Impossible d'envoyer des demandes de publication à REST via HTTPClient

J'ai un REST Api opérationnel qui fonctionne bien avec Postman que j'essaie de comprendre comment appeler avec une Post-requête de Xamarin Forms (en utilisant HTTPClient).

Ceci est mon code actuel:

public CreateFoundation() 
    { 
     InitializeComponent(); 
     lblInstructions.FontAttributes = FontAttributes.Bold; 
     lblInstructions.FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)); 

     btnCreate.Clicked += async (s, e) => 
      { 
       var arb = await PostCreateFoundation(txtCreateFoundation.Text); 
       await DisplayAlert("Clicked", "I was clicked. Text was: " + arb, "OK"); 
      }; 
    } 


    public async Task<string> PostCreateFoundation(string arbitrary) 
    { 

     Debug.WriteLine("I'm in!"); 
     var client = new System.Net.Http.HttpClient(); 
     client.DefaultRequestHeaders.Add("Accept", "application/json"); 
     var content = new StringContent(arbitrary); 

     var response = await client.PostAsync("http://myapi.com/RestfulAPI/api/Ole_foundations/Insert/", content); 

     var result = (response.Content.ReadAsStringAsync().Result); 
     return result; 


    } 

Lors de l'affichage du retour string (arb) Je vois que le uri est http://myapi.com/RestfulAPI/api/Ole_foundations/Insert/., peu importe ce que je vous envoie comme la chaîne arbitraire ...

L'URL qui en résulte lors de l'envoi de la chaîne "test" est:

{MESSAGE ":" Aucune ressource HTTP trouvée correspondant à l'URI de la demande 'http://myapi.com/RestfulAPI/api/Ole_foundations/Insert/ »"}

EDIT:. L'API prend une chaîne arbitraire comme un jeton, ajoute un objet prédéfini à la base de données et renvoie la chaîne transmise arbitraire comme un jeton de retour.

REST tête de la fonction API:

[HttpPost] 
    public string Insert(string s) 
+0

Merci pour l'édition, je ne savais pas si je devrais inclure l'adresse réelle de l'API ou non, car il pourrait être nécessaire pour l'exemple «minime et vérifiable». – geostocker

+0

Qu'est-ce que le service de repos est censé retourner? Vos derniers mots sont un peu confus. Pensez-vous que l'URL changera après la demande? –

+0

Le service REST renvoie simplement une chaîne, rien d'autre. Je travaille avec des données en direct, donc je passe une chaîne et je veux la récupérer du service. Comme un jeton pour s'assurer qu'un objet prédéfini a été inséré dans la base de données. – geostocker

Répondre

0

Quand un paramètre d'action est un type simple comme une chaîne, WebAPI suppose qu'il doit chercher dans la chaîne de requête. Mais vous le passez dans le corps. Essayez de changer la signature de méthode sur le côté de l'API à:

public string Insert([FromBody]string s)