2015-09-10 15 views
3

У меня есть скрипт curl, который загружает файл. Как преобразовать это в C#?Преобразование скрипта Curl в C#

Dim strCurl1 
Dim strCurl2 
Dim strCurl3 
Dim strCurl4 

strCurl1 = "c:\temp\Curl\curl -d " 
strCurl2 = "username=myUser&password=passwrd&asof=" & fileName & "&format=csv" 
strCurl3 = "https://website/PresentValueServlet > " & "c:\temp\Curl\Results_" & fileName & ".csv" 
strCurl4 = strCurl1 & Chr(34) & strCurl2 & Chr(34) & " " & strCurl3 & " --insecure --proxy proxy.myserver.com:8080 --proxy-user admin:passAdmin" 

Set objShell = CreateObject("WScript.Shell") 
objShell.run "cmd /K " & strCurl4 

Мой C# на сегодняшний день ...

string username = "myUser"; 
string password = "passwrd"; 
string fileDestination = @"c:\temp\Curl\Results_" + fileName + ".csv"; 
using (WebClient client = new WebClient()) 
{ 
    client.Credentials = new NetworkCredential(username, password); 
    client.DownloadFile(string.Format("https://website/PresentValueServlet"), fileDestination); 
} 

Обновленный C# код с прокси ...

WebProxy proxy = new WebProxy("myurl:8080", true); 
proxy.Credentials = new NetworkCredential("admin", "pswrd"); 
client.Proxy = proxy; 

Ошибка: Удаленный сервер возвратил ошибку: (403) Запрещено.

ответ

1

Используйте один из следующих вариантов:

HttpWebRequest/HttpWebResponse WebClient HttpClient (доступный от .NET 4.5 на)

Я настоятельно рекомендую использовать класс HttpClient, как это инженерии быть гораздо лучше (с точки зрения удобства использования), чем первые два.

В вашем случае, вы могли бы сделать это:

using System.Net.Http; 

var client = new HttpClient(); 

// Create the HttpContent for the form to be posted. 
var requestContent = new FormUrlEncodedContent(new [] { 
new KeyValuePair<string,>("text", "This is a block of text"), 
}); 

// Get the response. 
HttpResponseMessage response = await client.PostAsync(
"http://api.repustate.com/v2/demokey/score.json", 
requestContent); 

// Get the response content. 
HttpContent responseContent = response.Content; 

// Get the stream of the content. 
using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync())) 
{ 
// Write the output. 
Console.WriteLine(await reader.ReadToEndAsync()); 
} 

этот ответ от this site.

Еще один вопрос, который я нашел this решение в сети.

Вы также можете попытаться найти ответ this.

+0

Он работает на сервере, который не нуждается в прокси. Скрипт curl, который работает, использует ... strCurl4 = strCurl1 & Chr (34) & strCurl2 & Chr (34) & "" & strCurl3 & "--insecure --proxy muurl: 8080 --proxy-user admin: pswrd" My Код C# обновляется в исходном сообщении. Единственное отличие заключается в использовании _insecure_ в скрипте curl. – chevin

Смежные вопросы