2013-10-05 3 views
0

В приложении win я хочу получить Json из URL с именем пользователя и паролем и показать Json в richTextBox.I используйте код ниже, но метод myMethod() ждет все время?! что случилось в моем коде? Я использую .net 4.5 спасибо ...Получение Json с именем пользователя и паролем

async static Task<dynamic> myMethod() 
     { 
      NetworkCredential credentials = new NetworkCredential("username", "password"); 
      var handler = new HttpClientHandler { Credentials = credentials, AllowAutoRedirect = true }; 
      HttpClient client = new HttpClient(handler); 
      client.DefaultRequestHeaders.Add("User-Agent" ,"Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"); 
      var responseString = await client.GetStringAsync("http://myURL.php"); 
      dynamic stuff = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString 
      return stuff ;  } 
private void button2_Click(object sender, EventArgs e) 
     { 
      dynamic d=myMethod().Result; 
      richTextBox1.Text = d.ToString(); 
     } 
+0

Является ли это однопоточной средой? Где он застрял? Это в части GetStringAsync или позже? –

+0

Да, это однопоточная среда. Это простое приложение для тестирования получения данных от Json с использованием имени пользователя и пароля ... – John

ответ

0

Вы можете изменить метод button2_Click следующим образом:

private async void button2_Click(object sender, EventArgs e) 
{ 
    dynamic d= await myMethod(); 
    richTextBox1.Text = d.ToString(); 
} 

или изменить

await client.GetStringAsync("http://myURL.php"); 

в

client.GetStringAsync("http://myURL.php").Result; 
+0

Спасибо за ваши решения. Второе решение сработало. Но в результате я получил «Без доступа». Я уверен, что имя пользователя и пароль верны! – John

+0

Спасибо за ваши решения. Второе решение сработало. В результате я получил «Без доступа». Я уверен, что имя пользователя и пароль верны! – John

0

It Works:

string URI = "http://url.php"; 
     string myParameters = "username=myUsername&password=myPassword"; 
     using (WebClient wc = new WebClient()) 
     { 
      wc.Headers[HttpRequestHeader.ContentType] = 
      "application/x-www-form-urlencoded"; 
      string HtmlResult = wc.UploadString(URI, myParameters); 
      dynamic stuff1 = Newtonsoft.Json.JsonConvert.DeserializeObject(HtmlResult); 
     } 
Смежные вопросы