C#はHTTP基本認証セキュリティ認証のWebサービスを呼び出します

1.ネット方式

リクエストの送信時にHTTP基本認証の認証情報をリクエストに

追加するには、2つの方法があります。1つはリクエストヘッダーに認証を追加する方法です
認証:「基本的なユーザー名とパスワードのbase64暗号化文字列」、
もう1つはURLにユーザーを追加する方法です。名前とパスワード:
http:// userName:[email protected]/statuses/friends_timeline.xml
リクエストにAuthorizationヘッダーを追加する最初の言語の実装コードを見てみましょう。

string username="username";
string password="password";
//注意这里的格式哦,为 "username:password"
string usernamePassword = username + ":" + password;
CredentialCache mycache = new CredentialCache();
mycache.Add(new Uri(url), "Basic", new NetworkCredential(username, password));
myReq.Credentials = mycache;
myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(newASCIIEncoding().GetBytes(usernamePassword))); 


WebResponse wr = myReq.GetResponse();
Stream receiveStream = wr.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
string content = reader.ReadToEnd();
你当然也可以使用HttpWebRequest或者其他的类来发送请求。

2.ソースコードの実装: 

    WebReference.ExecutingServiceImplService client = new WebReference.ExecutingServiceImplService();
    string uri = "http://10.8.200.888:8087/MM-MES-QQ/services/ExecutingService?wsdl";
    CredentialCache mycache = new CredentialCache();
    //设置访问接口 Preemptive
    mycache.Add(new Uri(uri), "Basic", new NetworkCredential("userA001", "pass123"));
    string usernamePassword = "userA001" + ":" + "pass@123";
    client.Credentials = mycache;
    client.PreAuthenticate = true;     //设置预验证

    WebRequest req = WebRequest.Create(new Uri(uri));
    req.Credentials = mycache;
    req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));

    string soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                 "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://service.cxf.core.bgy.com/\">" + "<soapenv:Header/>" +
                     "<soapenv:Body>" +
                         "<ser:execute>" +
                         "<pRequest>" +
                             "<plant>" + "123" + "</plant>" +
                             "<data>" + "123" + "</data>" +
                             "<serviceCode>" + "123" + "</serviceCode>" +
                         "</pRequest>" +
                         "</ser:execute>" +
                     "</soapenv:Body>" +
                 "</soapenv:Envelope>";

    //将SOAP字符串信息转换成Byte数组,用于后面的流传输
    byte[] bytData = Encoding.UTF8.GetBytes(soap.ToString());
    req.Method = "POST";//POST方式传输
    req.ContentType = "text/xml; charset=utf-8";//传输内容类型及编码格式
    req.ContentLength = bytData.Length;//传输内容长
    Stream newStream = req.GetRequestStream();
    //将数据写入该流
    newStream.Write(bytData, 0, bytData.Length);//写入参数
    newStream.Close();
    WebResponse wr = req.GetResponse();
    Stream receiveStream = wr.GetResponseStream();
    StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
    string content = reader.ReadToEnd();

 

おすすめ

転載: blog.csdn.net/bj_chengrong/article/details/103202678