Je suis nouveau dans les services reposants et j'ai créé une série d'applications console simples pour mieux comprendre. J'ai un service simlple que j'essaye d'envoyer des données mais j'obtiens toujours une erreur 400 de demande mauvaise. Je sais que ça doit être quelque chose de simple que j'ai oublié. Toute aide serait grandement appréciée. MerciAide avec un simple problème de poste de repos
//service contract
[OperationContract, WebInvoke(Method = "POST", UriTemplate = "Test")]
bool Test(string input);
//service
public bool Test(string input)
{
Console.Out.WriteLine("recieved [" + input + "]");
return true;
}
//host program
class Program
{
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost:8889/TestImage");
WebServiceHost host = new WebServiceHost(typeof(ImageTestService), baseAddress);
try
{
host.Open();
Console.Out.WriteLine("TestService hosted at {0}", baseAddress.ToString());
Console.Out.WriteLine("hit enter to terminate");
Console.In.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
finally
{
if (host.State == CommunicationState.Faulted)
host.Abort();
else
host.Close();
}
}
}
//client program
// Create the web request
Uri address = new Uri("http://localhost:8889/TestImage/Test");
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
// Set type to POST
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
StringBuilder data = new StringBuilder();
data.Append("input=" + HttpUtility.UrlEncode("12345"));
// Create a byte array of the data we want to send
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());
// Set the content length in the request headers
request.ContentLength = byteData.Length;
// Write data
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
postStream.Close();
}
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
}
Merci pour votre response.I essayé votre suggestion et a ajouté une autre « test » à l'URL, mais je suis arrivé un 404. J'ai installé Fiddler et je peux voir ce que j'envoie au service mais tout me semble bien. Si la méthode du serveur a un argument nommé "input" dois-je inclure le parem naem dans la chaîne de post ou est-ce que je le fais seulement si le nom de parm est dans le modèle d'URL? – user503926