1
我正在學習使用客戶端創建RESTful API,但是我正在努力將用戶輸入傳遞給該帖子。我的控制器是好的,因爲我可以發送數據到數據庫(用Swagger測試),但在客戶端,調試器給我一個PostAsJsonAsync錯誤。我認爲這可能與路由有關。下面是我的客戶我郵編:將參數傳遞給C#Http客戶端post
static async Task AddAsync(ForumPost fp)
{
try
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:7656/");
client.DefaultRequestHeaders.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP POST
ForumPost thePost = new ForumPost() {
Subject = fp.Subject,
Message = fp.Message};
HttpResponseMessage response = await client.PostAsJsonAsync("post", thePost);
if (response.IsSuccessStatusCode)
{
Uri uri = response.Headers.Location;
Console.WriteLine("URI for new resource: " + uri.ToString());
}
else
{
Console.WriteLine(response.StatusCode + " " + response.ReasonPhrase);
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadLine();
}
}
和控制器
[HttpPost]
// POST: api/Forum
[Route("post")]
public void PostNewMessage (string subject, string message)
{
if (ModelState.IsValid)
{
ForumPost p = new ForumPost(subject, message);
db.ForumPosts.Add(p);
db.SaveChanges();
}
}
我身邊有各種不同但類似的問題在這裏看着左右,但努力理解的相關位。我曾嘗試在路線中放置佔位符,但也許我錯誤地實現了它? (如果那是甚至是正確思考的方式!)如果有人能幫助我解決這個問題,我將不勝感激。
嗨託德,感謝您的答覆。我試圖實現你所說的,但無濟於事。無論如何,我不確定這是(最大的!)問題。即使當我在客戶端硬編碼一個新帖子,並將其傳遞給PostAsJsonAsync時,我收到錯誤。它是一個套接字錯誤異常:「System.Net.Http.HttpRequestException:發送請求時發生錯誤---> System.Net.WebException:無法連接到遠程服務器---> System.Net.Sockets .SocketException:由於目標計算機主動拒絕它,因此無法建立連接127.0.0.1:23226\r\n...etc – Inkers
這是一個網絡問題,如果你google了那個異常消息,你會發現沒有結果短缺,比如例如,[this one](http://stackoverflow.com/questions/9695224/no-connection-could-be-made-because-the-target-machine-actively-refused-it-127-0)雖然我我相信我的建議修復也需要得到這個工作。 –
再次感謝託德,簡單的錯字在最後 - 錯誤的端口號。是的,我現在已經實施了你的建議,我的文章現在正在工作。 – Inkers