C# 如何将用户名密码从windows应用程序传递到web API?
我想从windows应用程序调用web api。您可以使用WebRequest调用您的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"); 更多信
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);
}