2017-02-21 6 views
-3

Вопрос заключается в том, как передать имя пользователя и пароль с помощью C# client (win form) на api сервера? если данные верны, тогда клиент получит полный список продуктов из webapi (url) .and bind products to datagridview.i сделал «привязку продуктов к gridbview, и до этого мне нужно проверить, чтокак передать пароль пользователя с C# клиента (приложение Windows) в веб-api, чтобы проверить логин?

клиент отправит имя пользователя из win form на сервере api. Если webapi сервера проверяет, является ли он авторизованным пользователем, если он не позволяет ему получить список продуктов.

+2

Вы можете разместить код, который вы в настоящее время есть? – Rawns

+0

i ddint получить любую идею, как решить эту проблему. мне нужна помощь. но я получаю данные в виде сетки, я сделал это. но как я могу проверить логины из формы выигрыша? –

ответ

2

Вы можете использовать WebRequest для вызова своего WebApi. Что-то в этих строках. Его трудно понять, что вы точно хотите При запросе вопроса попробуйте подробно рассказать о том, что вы уже пробовали и что не удается. Это не кодовая услуга.

WebRequest request = WebRequest.Create("http://webapiaddress"); 
request.Credentials = new System.Net.NetworkCredential("username", "password"); 

Edit после получения дополнительной информации:

Вы могли бы использовать что-то на этих линиях:

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; 
    } 
+0

использование (вар клиента = новый HttpClient()) { с помощью (ответ вара = ждет client.GetAsync (путь2)) { , если (response.IsSuccessStatusCode) { данные вара = ждет response.Content.ReadAsStringAsync() ; dtGrid.datasource = данные; }}}. перед выполнением этого мне нужно проверить логины пользователей. означает, что я хочу передать useri, passwrd в web api, если пользователь действителен, тогда я покажу свою форму gridview. –

0
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); 
     }