将Coldfusion中的COM对象(或可能是XMLHTTP)转换为C#

时间:2011-08-11 16:18:53

标签: c# xml com coldfusion

我一直在将一堆文件从Coldfusion转换为C#,到目前为止,所有这些文件一直在流动。我正在学习ColdFusion,我几乎没有用C#写作,所以我被困在这里。任何人都可以帮忙解释我将如何将这段代码翻译成C#?

<cfobject type="COM" action="Create" name="objServerXMLHttp" class="msxml2.ServerXMLHTTP.3.0">
<cfset objServerXMLHttp.open("POST", "http://URL", True , "Me.User", "Me.Password")>
<cfset objServerXMLHttp.setRequestHeader("Content-Type", "text/xml")>
<cfset objServerXMLHttp.setRequestHeader("charset", "utf-8")>
<cfset objServerXMLHttp.send("#XMLRequest#")>
<cfset thread = CreateObject("java", "java.lang.Thread")>

对于某些背景,我基本上只是从数据库中获取信息,用字符串中的XML标记围绕它,从字符串中创建XML文件,现在我就在这里。

2 个答案:

答案 0 :(得分:2)

使用动态关键字在C#4.0(VS2010)中直接翻译很容易:

        dynamic objServerXMLHttp = Activator.CreateInstance(Type.GetTypeFromProgID("msxml2.ServerXMLHTTP.3.0"));
        objServerXMLHttp.open("POST", "http://chrdevweb:8080/mellibase/webservice/rest", true, "Me.User", "Me.Password");
        objServerXMLHttp.setRequestHeader("Content-Type", "text/xml");
        objServerXMLHttp.setRequestHeader("charset", "utf-8");
        objServerXMLHttp.send("#XMLRequest#");

答案 1 :(得分:1)

所以只是为了分解这个冷却代码在做什么(你可能知道的):

  1. 它在内存中实例化对象类型msxml2.ServerXMLHTTP。
  2. 然后使用该对象构建XML文档。
  3. 然后将其(通过HTTP POST)发送到URL:http://chrdevweb:8080/mellibase/webservice/rest
  4. 最后,它似乎实例化了一个java对象(不确定它是否相关)。
  5. 所以在使用c#的asp.net中,邮政编码是这样的:

    
       HttpWebRequest request=null;
       Uri uri = new Uri(url);
       request = (HttpWebRequest) WebRequest.Create(uri);
       request.Method = "POST";
       request.ContentType = "application/x-www-form-urlencoded";
       request.ContentLength = postData.Length;
    
       using(Stream writeStream = request.GetRequestStream())
       {
          UTF8Encoding encoding = new UTF8Encoding();
          byte[] bytes = encoding.GetBytes(postData);
          writeStream.Write(bytes, 0, bytes.Length);
       }
    
       string result=string.Empty;
       using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
       {
           using (Stream responseStream = response.GetResponseStream())
           {
              using (StreamReader readStream = new StreamReader (responseStream,   Encoding.UTF8))
              {
                result = readStream.ReadToEnd();
              }
           }
       }  
    
    

    最后的结果变量会保留您的回复。 'url'是您要发布的网址,'postData'是您的xml字符串。

    要构建XML文档,您可以在c#中使用XMLdocument,或者只需将字符串放在一起。

    PS:这是未经测试的,因此某处可能存在语法错误:)