0

サーバーに次のコードがあります。

public class UploadController : ApiController
{

    public void Put(string filename, string description)
    {
        ...
    }

    public void Put()
    {
        ...
    }

クライアントから呼び出してみます:

        var clientDescr = new HttpClient();

        var postData = new List<KeyValuePair<string, string>>();
        postData.Add(new KeyValuePair<string, string>("filename", "test"));
        postData.Add(new KeyValuePair<string, string>("description", "100"));

        HttpContent contentDescr = new FormUrlEncodedContent(postData);

        clientDescr.PutAsync("http://localhost:8758/api/upload", contentDescr).ContinueWith(
            (postTask) =>
            {
                postTask.Result.EnsureSuccessStatusCode();
            });

しかし、このコードは 2 番目の put メソッド (パラメーターなし) を呼び出します。first put メソッドを正しく呼び出す理由と方法は?

4

1 に答える 1

1

ここにはいくつかのオプションがあります。

URI を次のように変更するだけで、クエリ文字列でパラメーターを渡すことを選択できます。

http://localhost:8758/api/upload?filename=test&description=100

または、アクションを次のように変更して、Web API にフォーム データを解析させることもできます。

public void Put(FormDataCollection formData)
{
    string fileName = formData.Get("fileName");
    string description = formData.Get("description");
}

また、fileName と description プロパティを持つクラスを作成し、それをパラメーターとして使用して、Web API が正しくバインドできるようにすることもできます。

于 2013-06-22T21:13:55.747 に答える