2017-05-09 14 views
0

私はC#で慣れ親しんでいないし、コーディングに新しいです。しかし、Azure関数で使用するためにC#に変換しようとしているPHPスクリプトが15分ごとに起動します。私はコードの最初のセクションと機能を持っており、Azureファンクションコンソールでコンパイルして成功を収めますが、結果には出力がありません。私はそれが名前空間を持っていないというエラーが出ますし、私はそれまたは応答を返す場合、私は任意の出力を取得しないのvar authorizationCodeを削除した場合C# - Azure関数の問題

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Net; 
using System.Net.Http; 
using System.Text; 
using System.Text.RegularExpressions; 

public static void Run(TimerInfo myTimer, TraceWriter log) 
{ 
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");  
} 
{ 
using (var httpClientHandler = new HttpClientHandler()) 
{ 
httpClientHandler.AllowAutoRedirect = false; 

using (var httpClient = new HttpClient(httpClientHandler))  
{ 
var response = 
httpClient.GetAsync("https://auth.bullhornstaffing.com/oauth/authorize? 
client_id=****type=code&username=*****&password=*****&action=Login").Result; 
if (response.StatusCode == HttpStatusCode.Found) 
{ 
var redirectUrl = response.Headers.Location; 
var startIndex = redirectUrl.Query.IndexOf("code=") + 5; 
var endIndex = redirectUrl.Query.IndexOf("&", startIndex); 
var authorizationCode = (redirectUrl.Query.Substring(startIndex, endIndex - 
startIndex)); 
} 
} 
} 
    } 

:以下のコードです。

助けていただければ幸いです。

答えて

1

httpClient.GetAsyncは非同期のステートメントです。つまり、Web要求が完了するのを待たずにコードが継続しています。 GetAsync待ってから続行することができます:

var task = httpClient.GetAsync("https://auth.bullhornstaffing.com/oauth/authorize?client_id=****type=code&username=*****&password=*****&action=Login"); 
task.Wait(); 
var response = task.Result; 

も2つのブラケットが多すぎる(ライン12 & 13)があり、私はあなたがhttpContentのContentLocationにアクセスしたいと思いますか?

は、おそらくそれは正しいものだ:

using System; 
using System.Net; 
using System.Net.Http; 

public static void Run(TimerInfo myTimer, TraceWriter log) 
{ 
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}");  

    using (var httpClientHandler = new HttpClientHandler()) 
    { 
     httpClientHandler.AllowAutoRedirect = false; 

     using (var httpClient = new HttpClient(httpClientHandler)) 
     { 
      log.Info("get async..."); 
      var task = httpClient.GetAsync("https://auth.bullhornstaffing.com/oauth/authorize?client_id=****type=code&username=*****&password=*****&action=Login"); 
      task.Wait(); 

      var response = task.Result; 
      var httpContent = response.Content; 
      log.Info("Result: " + httpContent.Headers.ContentLocation); 

      if (response.StatusCode == HttpStatusCode.Found) 
      { 
       var redirectUrl = httpContent.Headers.ContentLocation; 
       var startIndex = redirectUrl.Query.IndexOf("code=") + 5; 
       var endIndex = redirectUrl.Query.IndexOf("&", startIndex); 
       var authorizationCode = (redirectUrl.Query.Substring(startIndex, endIndex - startIndex)); 
      } 
     } 
    } 
} 
+0

おかげで、それは今で待ち、プリントが結果が、返されたURLにコードを拾うのdoesnt。でもありがとう。 –

関連する問題