2016-07-26 150 views
-3

我在php中有以下代碼運行完美,問題在於它的運行速度很慢,因爲它在循環中運行多次。在php中實現多線程是另一個問題。但我知道如何在C#中執行多線程,因此如果任何人都可以將此函數轉換爲C#,我將處理多線程部分。curl等效於C#

function process_registration($reg,$phone,$key,$secret) 
    { 
    $fields['regno']= $reg; 
    $fields['phone']= $phone; 
    $fields['key']= $key; 
    $fields['secret']= $secret; 
    $process = curl_init('http://theip/registrationsearch/confirm_status.php'); 
    curl_setopt($process, CURLOPT_POSTFIELDS, $fields); 
    curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE); 
    $result = curl_exec($process); 
    $the_data=json_decode($result,true); 
    if($the_data['Status']==='Ok') return $the_data['registration_details']; 
    else return $the_data['Status']; 
    } 

我想在C#控制檯應用程序中實現此功能。這樣我就可以實現C#的多線程功能。 我試過用HttpClient沒有成功,任何人都可以幫忙嗎?

這是功能我在C#中沒有,但我沒有得到響應沒有錯誤消息

static async Task<int> MainAsync(string[] args) 
    { 
     var client = new HttpClient(); 
     var keyValues = new List<KeyValuePair<string, string>>(); 
     keyValues.Add(new KeyValuePair<string, string>("key", args[0])); 
     keyValues.Add(new KeyValuePair<string, string>("secret", args[1])); 
     keyValues.Add(new KeyValuePair<string, string>("phone", args[2])); 
     keyValues.Add(new KeyValuePair<string, string>("regno", args[3])); 

     var requestContent = new FormUrlEncodedContent(keyValues); 

     HttpResponseMessage response = await client.PostAsync("http://theip/registrationsearch/confirm_status.php", requestContent); 
     HttpContent responseContent = response.Content; 
     Console.WriteLine("Waiting for response..."); 

     using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync())) 
     { 
      Console.WriteLine(await reader.ReadToEndAsync()); 
     } 
     return 1; 
    } 
+0

這將是最好展現你'C#'代碼是什麼錯誤,你得到,並且還可以改變你的問題。 – zulq

+0

我會建議嘗試使用HttpClient而不是成功。你能證明你所嘗試過的嗎?也許那麼我們可以指出你正確的方向。 – Jite

+0

你有沒有試過尋找你在問什麼? [這裏](http://stackoverflow.com/q/21255725/1997232)是用「curl c#」(我不能判斷它是否適用)。此外,你可以在標題中詢問**好**(除非重複)具體問題,然後突然發佈一堆代碼並要求翻譯它(這是**糟糕,沒有人會這樣做,你會得到低投票)。 – Sinatr

回答

1
private static async void TestAsyncPost() 
{ 
    var values = new Dictionary<string, string>(); 
    values.Add("regno", "testReg"); 
    values.Add("phone", "testPhone"); 
    values.Add("key", "testKey"); 
    values.Add("secret", "testSecret"); 
    var content = new FormUrlEncodedContent(values); 
    using (var client = new HttpClient()) 
    { 
    try 
    { 
     var httpResponseMessage = await client.PostAsync("http://theip/registrationsearch/confirm_status.php", content); 
     if (httpResponseMessage.StatusCode == HttpStatusCode.OK) 
     { 
     // Do something... 
     var response = await httpResponseMessage.Content.ReadAsStringAsync(); 
     Trace.Write(response); // response here... 
     } 
    } 
    catch (Exception ex) 
    { 
     Trace.Write(ex.ToString()); // error here... 
    } 
    } 
} 
+0

工作就像一個魅力!非常感謝! – indago