Zugang zu web-API über eine Konsole-Anwendung
In den Prozess des Lernens über die web API, die ich erstellt habe (oder eigentlich Visual Studio) und eine einfache Steuerung. Ich habe auch ein WPF-Programm zum Lesen von web-API ' s GET () - Teil, aber ich kann nicht auf die anderen.
Habe ich einiges ausprobiert und festgestellt, viele blogs und Seiten, die sagen: "tun Sie Einfach so...", aber nichts funktioniert. Was mache ich falsch?
MVC-Teil:
namespace MVCWebservice.Controllers
{
public class LaLaController : ApiController
{
//GET: api/LaLa
public string Get()
{
return "Hello from API";
}
//GET: api/LaLa/5
public string Get(int id)
{
return "value";
}
//POST: api/LaLa
public void Post([FromBody]string value)
{
var a = value;
}
//PUT: api/LaLa/5
public void Put(int id, [FromBody]string value)
{
var b = value;
int c = id;
}
//DELETE: api/LaLa/5
public void Delete(int id)
{
int c = id;
}
}
}
Und eine Methode aus meiner Konsole-Anwendung, die tatsächlich funktioniert:
private static async Task ReadFromWebApi()
{
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
client.BaseAddress = new Uri("http://localhost:26176/");
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
var resp2 = await client.GetAsync("api/LaLa/");
resp2.EnsureSuccessStatusCode();
var aaa = resp2.Content;
string result = await aaa.ReadAsStringAsync();
Console.WriteLine(result);
}
Einer Methode, die einfach aufhört:
Wenn ich entfernen Sie die EnsureSuccessStatusCode
ich werde die folgenden zurück:
ss = "{\"Message\":\"Die angeforderte Ressource nicht unterstützt http
Methode 'PUT'.\"}"
private static async Task SendToWebApi()
{
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
client.BaseAddress = new Uri("http://localhost:26176/");
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
Console.WriteLine("-1-");
var resp2 = client.PutAsync("api/LaLa/", new System.Net.Http.StringContent("Hey", Encoding.UTF8, "application/json")).Result;
Console.WriteLine("-2-");
resp2.EnsureSuccessStatusCode();
var ss = await resp2.Content.ReadAsStringAsync();
}
Wie würde ich es schreiben, mein Zugang zu den anderen Methoden?
InformationsquelleAutor Benny Jørgensen | 2015-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für eine Sache, die Sie anrufen, SETZEN Sie auf die URL
api/LaLa/
, aber vom server die Signatur der Methodees scheint, dass die URL sollte eine numerische id zu befriedigen, ist der erste parameter, z.B.
api/LaLa/100
oder ähnliches. Vielleicht könnten Sie ändern Ihre AUFTRAGGEBER zu nennenPutAsync()
wie diese:POST arbeiten? Blick auf diese Antwort auf eine Frage, die sieht bemerkenswert wie das Ihre, und sehen, ob Sie bekommen können, um zu arbeiten.
Ersetzen Sie "Hey" mit einigen gültiges json. Vielleicht, "{\"value\":\"Hey\"}"
InformationsquelleAutor mhawke