C# 如何将用户名密码从windows应用程序传递到web API?

C# 如何将用户名密码从windows应用程序传递到web API?,c#,asp.net-web-api,C#,Asp.net Web Api,我想从windows应用程序调用web api。您可以使用WebRequest调用您的web api。这句话有点意思。很难理解你到底想要什么。当问问题时,试着详细说明你已经试过的和失败的。这不是编码服务 WebRequest request = WebRequest.Create("http://webapiaddress"); request.Credentials = new System.Net.NetworkCredential("username", "password"); 更多信

我想从windows应用程序调用web api。

您可以使用WebRequest调用您的web api。这句话有点意思。很难理解你到底想要什么。当问问题时,试着详细说明你已经试过的和失败的。这不是编码服务

WebRequest request = WebRequest.Create("http://webapiaddress");
request.Credentials = new System.Net.NetworkCredential("username", "password");
更多信息后编辑:

您可以在这些行中使用一些内容:

    public async Task<TResult> GetAsync<TResult>(string uriString) where TResult : class
    {
        var uri = new Uri(uriString);
        using (var client = GetHttpClient())
        {
            HttpResponseMessage response = await client.GetAsync(uri);
            if (response.StatusCode != HttpStatusCode.OK)
            {
                //Log.Error(response.ReasonPhrase);
                return default(TResult);
            }
            var json = await response.Content.ReadAsStringAsync();
            return JsonConvert.DeserializeObject<TResult>(json, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
        }
    }

    private HttpClient GetHttpClient()
    {
        var client = new HttpClient();
        var username = // get your username
        var password = // get your password
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}")));
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        return client;
    }
public async Task GetAsync(string uriString),其中TResult:class
{
var uri=新uri(uriString);
使用(var client=GetHttpClient())
{
HttpResponseMessage response=wait client.GetAsync(uri);
if(response.StatusCode!=HttpStatusCode.OK)
{
//Log.Error(response.ReasonPhrase);
返回默认值(TResult);
}
var json=await response.Content.ReadAsStringAsync();
返回JsonConvert.DeserializeObject(json,新JsonSerializerSettings{ContractResolver=new CamelCasePropertyNamesContractResolver()});
}
}
私有HttpClient GetHttpClient()
{
var client=新的HttpClient();
var username=//获取您的用户名
var password=//获取您的密码
client.DefaultRequestHeaders.Authorization=newauthenticationHeaderValue(“Basic”,Convert.ToBase64String(Encoding.UTF8.GetBytes($“{username}:{password}”));
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
返回客户;
}
var-client=new-HttpClient();
var stringContent=newstringcontent(JsonConvert.SerializeObject(objuser),Encoding.UTF8,“application/x-www-form-urlencoded”);
添加(“j_用户名”,objuser.j_用户名);
添加(“j_密码”,objuser.j_密码);
HttpResponseMessage response=client.PostAsync(@“URL”?j_username=“+objuser.j_username+””和j_password=“+HttpUtility.UrlEncode(objuser.j_password),stringContent)。结果;
字符串path2=“URL/getall”;
var response1=await client.GetAsync(路径2);
var data=await response1.Content.ReadAsStringAsync();
如果(真)
{
var data2=JsonConvert.DeserializeObject(数据);
}

你能发布你当前拥有的代码吗?我不知道如何解决这个问题。我需要帮助。但我正在将数据获取到网格视图。我这样做了。但是我如何检查win表单的登录?使用(var client=new HttpClient()){使用(var response=wait client.GetAsync(path2)){if(response.issucessStatusCode){var data=wait response.Content.ReadAsStringAsync();dtGrid.datasource=data;}}}}}。在执行此操作之前,我需要检查用户登录名。这意味着我要将useri,passwrd传递给web api,如果用户有效,那么我将显示我的gridview表单。
 var client = new HttpClient();
 var stringContent = new StringContent(JsonConvert.SerializeObject(objuser), Encoding.UTF8, "application/x-www-form-urlencoded");

 stringContent.Headers.Add("j_username", objuser.j_username);
 stringContent.Headers.Add("j_password", objuser.j_password); 
 HttpResponseMessage response = client.PostAsync(@"URL"?j_username=" + objuser.j_username + "&j_password=" + HttpUtility.UrlEncode(objuser.j_password), stringContent).Result;
 string path2 = "URL/getall";

 var response1 = await client.GetAsync(path2);

  var data = await response1.Content.ReadAsStringAsync();
     if (true)
        {
     var data2 = JsonConvert.DeserializeObject<RootObject>(data);
         }