C# make wget request - c#

I have this wget request:
wget --http-user="user" --http-passwd="password"
www.example.com
In http request i wrote url address, but i don't know where to put login iformation.
Thank you

How about:
string page;
using(var client = new WebClient()) {
client.Credentials = new NetworkCredential("user", "password");
page = client.DownloadString("http://www.example.com/");
}
?

Related

Send HTTP request with "Negotiate Authorization"

How can I send an HTTP request with Negotiate Authorization header attribute from a .NET (C#) application?
I tried the following, but Authorization attribute was not added to the request...
...
string url = ...;
WebRequest request = WebRequest.Create(url);
request.Credentials = GetCredential();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
...
private CredentialCache GetCredential()
{
string url = ...;
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new System.Uri(url), "Ntlm", new NetworkCredential(username, pwd, domain));
return credentialCache;
}
My experience with using a network credential in a WebRequest is that the request.GetResponse() does NOT pass the credential unless it receives an Unauthorized (challenge) response from the server. If it does receive a 403, it will automatically fire a second request which includes the credential. Make sure the end point you are hitting returns a 401 if the Auth header is missing.

C# webrequest to curl

I need to make a GET request to following url
[ ~ ] $ curl -u duff:X https://subs.pinpayments.com/api/v4/sitename/subscribers/7388.xml
where -u is username and then X is password.
How to use WebRequest?
Please suggest
The WebRequest class has a Credentials property, which you can set:
WebRequest request = WebRequest.Create(uri);
request.Credentials = new NetworkCredential("username", "password");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Another possibility would be to use the WebClient class, that supports custom credentials too:
WebClient client = new WebClient();
client.Credentials = new NetworkCredential("username", "password");
//Byte[] pageData = client.DownloadData(url);
//string pageHtml = Encoding.ASCII.GetString(pageHtml);
// or DownloadString: http://msdn.microsoft.com/en-us/library/fhd1f0sw%28v=vs.110%29.aspx
var pageHtml = client.DownloadString(uri);
Console.WriteLine(pageHtml);
If you need for a reason to set custom header information for the request, then the WebClient class could be more suitable.

Webrequest doesn't include authentication header

I am running the following in c# to send a login request to an API. However, according to Fiddler, it is not sending an Authentication Header. I am a rookie, so it is likely something simple.
NetworkCredential netcreds=new NetworkCredential(username,password);
CredentialCache credentials = new CredentialCache();
credentials.Add(new Uri(LoginUrl.ToString()),"Basic",netcreds);
Uri LoginUri = new Uri(LoginUrl);
WebRequest AuthRequest = WebRequest.Create(LoginUri);
AuthRequest.Credentials = credentials; `
AuthRequest.Headers.Add(HttpRequestHeader.AcceptEncoding,#"application/*+xml;version=1.5");`

webclient 401 into c#

I'm have some problems to use webclient.
When I try it:
var client = new WebClient();
client.Credentials = new NetworkCredential("intranet.homolog", "S3br#32011", "na-sebrae");
var html = client.DownloadData("http://www.intranet.sebrae.com.br/noticias/todas-as-notícias/rss.aspx?estado=");
I get an error (401).
This url returns xml feed, and, when I access it into browser, I login normally.
This user, and password are real.
Somebody have some ideia to I access it with the webclient?
Here's my guess: you're misusing the NetworkCredential constructor
The correct syntax is
public NetworkCredential(
string userName,
string password,
string domain
)
First username, then password, then domain - you got yours all wrong.
Try the following:
var client = new WebClient();
client.Credentials = new NetworkCredential("na-sebrae",
"S3br#32011", "intranet.homolog");
var html = client.DownloadData("http://www.intranet.sebrae.com.br" +
"/noticias/todas-as-notícias/rss.aspx?estado=");
I too get same error. The same link work better in browser but but giving 401 exception for WebClient.
string url = "http://www.intranet.sebrae.com.br/noticias/todas-as-notícias/rss.aspx?estado=";
var webClient = new WebClient();
webClient.Credentials = CredentialCache.DefaultCredentials;
byte[] html = webClient.DownloadData(fileAbsoluteUri);

System.Net.WebClient fails weirdly

I am trying to download some data from the reporting services instance on our TFS server.
Given that the code should run on a computer that is not domain-joined, I figured that I would set the credentials myself. No luck, got a HTTP 401 Unauthorized back. Ok, so I hooked up Fiddler to see what was happening.
But that's when I got Heisenberged - the call now went through without a hitch. So the authentication goes through with Fiddler connected, but fails without it. Is the Webclient broken or am I missing something profound here?
private void ThisWorksWhenDomainJoined()
{
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultNetworkCredentials;
wc.DownloadString("http://teamfoundationserver/reports/........"); //Works
}
private void ThisDoesntWork()
{
WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential("username", "password", "domain");
wc.DownloadString("http://teamfoundationserver/reports/........"); //blows up wih HTTP 401
}
Take a look at this link:
HTTP Authorization and .NET WebRequest, WebClient Classes
I had the same problem as you. I have only added one line and it started to work. Try this
private void ThisDoesntWork()
{
WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential("username", "password", "domain");
//After adding the headers it started to work !
wc.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
wc.DownloadString("http://teamfoundationserver/reports/........"); //blows up wih HTTP 401
}
Try this ...
var credCache = new CredentialCache();
credCache.Add(new Uri("http://teamfoundationserver/reports/........""),
"Basic",
new NetworkCredential("username", "password", "DOMAIN"));
wc.Credentials = credCache;
If that does not work, try replacing "Basic" with "Negotiate".
What happens when you use this?
wc.Credentials = CredentialCache.DefaultCredentials;
Also, are you sure you have the correct username, password and domain?
Also: I wonder if Fiddler is changing around some unicode characters when .net breaks them or something like that. If your user/pass/domain has unicode, try escaping it out like "\u2638" instead of "☺".
I was able to get around this error by using a CredentialCache object, as follows:
WebClient wc = new WebClient();
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri("http://mydomain.com/"), "Basic",
new NetworkCredential("username", "password"));
wc.Credentials = credCache;
wc.DownloadString(queryString));

Categories