.Net MVC アプリケーションから Cloudant (ソファ スタイルの DB) に接続しようとしています。ここに示すように、HttpClient を使用して Web API を使用するためのガイドラインに従っています: http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-ネットクライアント
これまでのところ、ドキュメントを取得する方法とドキュメントを作成する方法の 2 つの方法がありますが、どちらにもエラーがあります。Get メソッドは Unauthorized を返し、Post メソッドは MethodNotAllowed を返します。
クライアントは次のように作成されます。
private HttpClient CreateLdstnCouchClient()
{
// TODO: Consider using WebRequestHandler to set properties
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(_couchUrl);
// Accept JSON
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
Get メソッドは次のとおりです。
public override string GetDocumentJson(string id)
{
string url = "/" + id;
HttpResponseMessage response = new HttpResponseMessage();
string strContent = "";
using (var client = CreateLdstnCouchClient())
{
response = client.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
strContent = response.Content.ReadAsStringAsync().Result;
}
else
{
// DEBUG
strContent = response.StatusCode.ToString();
LslTrace.Write("Failed to get data from couch");
}
}
return strContent;
}
Post メソッドは次のとおりです。
public override string CreateDocument(object serializableObject)
{
string url = CouchApi.CREATE_DOCUMENT_POST;
HttpResponseMessage response = new HttpResponseMessage();
string strContent = "";
using (var client = CreateLdstnCouchClient())
{
response = client.PostAsJsonAsync(url, serializableObject).Result;
strContent = response.Content.ReadAsStringAsync().Result;
}
if (response.IsSuccessStatusCode)
{
return strContent;
}
else
{
LslTrace.Write("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
return response.StatusCode.ToString();
}
}
URL は、API ドキュメントに基づいています: https://username:password@username.cloudant.com。
私は何が起こっているのか非常に混乱しており、例を見つけるのに苦労しています. ご協力いただきありがとうございます!
トーマス