0

curlの代わりに.NETクラス(httpWebRequest)を使用してデータベースを複製しようとしています。残念ながら、cURLは機能しますが、.NETの(おそらく)同じ構文が404 "Unauthorized to access orcreatedatabase"エラーで失敗します。以下は私のコードです。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("sourceURL");
        request.Method = "POST";
        request.ContentType = "application/json";

        long ticks = DateTime.UtcNow.Ticks;

        string json = "{ \"_id\":\"database_replicate" + ticks + "\", \"source\":\"sourceURL/database\", \"target\":\"database\", \"create_target\":true, \"user_ctx\": { \"roles\": [\"_admin\"] } }";

        using (var writer = new StreamWriter(request.GetRequestStream()))
        {
            writer.Write(json);
            writer.Close();
        }

次に、ここで、応答で失敗します。

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

ローカルホストとの間で複製しています。request.Credentialsを使用してクレデンシャルを渡そうとしましたが、問題は変わりません。また、URLでクレデンシャルを明示的に渡すこともありません。

4

2 に答える 2

3

コードが記述されると、json文字列は次のようになります。

{
    "_id":"database_replicate634805792932046092",
    "source":"sourceURL/database",
    "target":"database",
    "create_target":true,
    "user_ctx": {
        "roles": ["_admin"]
    }
}

cURLを使用する場合、何を送信しますか?

于 2012-08-15T13:21:53.457 に答える
1

結局のところ、問題は私のユーザー名とパスワードがキャッチされていなかったことでした。URLの一部として、またはクレデンシャル属性としてそれらを渡そうとしたかどうかにかかわらず、それはそれらを取得しませんでした。このような承認ヘッダーを作成する必要がありました

$authorization = [System.Convert]::ToBase64String([System.Text.ASCIIEncoding]::ASCII.GetBytes("username" + ":" + "password")) 
$delRequest.Headers.Add("Authorization", "authType " + $authorization)

それを機能させるために。

于 2012-08-15T16:56:38.770 に答える