csharp 外部服务的简单代理。通过将callout分解为代理类来最小化接近外部服务调用的未经测试的代码。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 外部服务的简单代理。通过将callout分解为代理类来最小化接近外部服务调用的未经测试的代码。相关的知识,希望对你有一定的参考价值。

using System.Xml.Linq;

namespace LeeSoft.TestUtils.SimpleProxy
{
    public interface IServiceProxy
    {
        XDocument Load();
    }
}
using log4net;
using System.Net;
using System.Xml.Linq;

namespace LeeSoft.TestUtils.SimpleProxy
{
    public class ConcreteServiceProxy: BaseServiceProxy
    {
        public ConcreteServiceProxy(ILog log) : base(log)
        {
            ProxyName = "ConcreteServiceProxy";
        }

        public override XDocument Load()
        {
            var client = new WebClient { Credentials = new NetworkCredential("abc", "xyz") };

            // Add a user agent header in case the requested URI contains a query.
            client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

            var data = client.OpenRead("http://www.somedomain.com/OutgoingData/clientName/DATA.XML");

            var doc = XDocument.Load(data);

            LogReceipt(doc);

            return doc;
        }
    }
}
using log4net;
using System.Globalization;
using System.Xml.Linq;

namespace LeeSoft.TestUtils.SimpleProxy
{
    public abstract class BaseServiceProxy : IServiceProxy
    {
        protected ILog Log;

        protected string ProxyName = "BaseServiceProxy";

        protected BaseServiceProxy(ILog log)
        {
            Log = log;
        }

        public abstract XDocument Load();

        protected void LogReceipt(XDocument data)
        {
            Log.Info(string.Format(CultureInfo.InvariantCulture, "Loaded data from {0}. Content: {1}", ProxyName, data));
        }
    }
}

以上是关于csharp 外部服务的简单代理。通过将callout分解为代理类来最小化接近外部服务调用的未经测试的代码。的主要内容,如果未能解决你的问题,请参考以下文章

Nginx反向代理常用配置

正向代理和反向代理的区别

Tomcat 中的 WEB 应用如何使用代理向外部发起请求

在访问外部 Web 服务 (.NET 2.0) 之前获取代理配置

使用通道工厂而不是使用代理或添加服务引用来使用外部 WCF 服务

csharp 使用基本身份验证和代理的简单C#.NET 4.5 HTTPClient请求