1

MVCを使用してHTTPに従ってWebApiメソッドを呼び出そうとしています。userIDやアプリのバージョンなどの情報を毎回送信する必要があります。この情報をヘッダーに追加するにはどうすればよいですか?現在のようにクライアント側のコードではなく、ajax呼び出しとして実行したい):

      'beforeSend: function (req) {
                req.setRequestHeader("Accept", "version=1.00,requestTime=" + new Date());
            }'

しかし、サーバー側では、文字列でRequestHeaderを設定できません。これは私のサーバーコードです。

 HttpClient client = new HttpClient();
 var request = new HttpRequestMessage()
        {
            RequestUri = new Uri("http://localhost/WebAPIDemo/FilterAttribute-MVC"),
            Method = HttpMethod.Get,
        };

        request.Headers.Accept.Add(***);
        //request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        List<OfficeSupply> os=new List<OfficeSupply>();
        var task = client.SendAsync(request)
            .ContinueWith((taskwithmsg) =>
            {
                var response = taskwithmsg.Result;

                var jsonTask = response.Content.ReadAsAsync<List<OfficeSupply>>();
                jsonTask.Wait();
                var jsonObject = jsonTask.Result;
                os = jsonObject.ToList();
            });
        task.Wait();

***'MediaTypeWithQualityHeaderValue'タイプの値である必要がありますが、ajax呼び出しのようにカスタムに設定したいだけです。どうすればいいですか?

また、Header Authorizationパラメーターを変更したいのですが、このコードは次のとおりです。

 'client.DefaultRequestHeaders.Add("Authorization", "12345");' 

動作しませんでした

  request.Headers.Authorization.Parameter

読み取り専用だと言った。

送信する前にサーバー側で設定するにはどうすればよいですか?

4

2 に答える 2

2

次のようにして、カスタム認証スキームを指定できます。

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("scheme","whatever parameters");

次のようなコードを使用して、完全にカスタムのヘッダーを設定できます。

request.Headers.TryAddWithoutValidation("foo", new List<string>() {"sdadads"});

ただし、上で示した Accept ヘッダーの例は完全に無効です。受け入れヘッダーの内容をどのようにフォーマットするかについては非常に正確な規則があり、あなたの例は無効です。

于 2012-12-18T02:36:12.130 に答える
0

以前は、リクエストヘッダーを設定するために以下のアプローチに従っていました。効果があれば試してみてください。

[脚本]

 $("#Grid1").ajaxSuccess(function (evt, request, settings) {
    $('.Status').html(request.getResponseHeader("Status"));
  });

[意見]

  <h2>Status:</h2><h2 class="Status" style="color:Red;">

[コントローラ]

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Save(Order orders)
    {
        string status = string.Empty;

        if (orders != null)
        {
            OrderRepository.Update(orders);
            status = "Updated";
        }

        Response.AddHeader("Status", status);            
        return data.GridActions<EditableOrder>();
    }

応答ヘッダー

于 2012-12-18T04:41:19.167 に答える