Перевод COM-объектов (или, возможно, XMLHTTP) в Coldfusion на C # - PullRequest
0 голосов
/ 11 августа 2011

Я конвертировал кучу файлов из 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 ]

2 голосов
/ 11 августа 2011

Прямой перевод в C # 4.0 (VS2010) прост с ключевым словом dynamic :

        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 голос
/ 11 августа 2011

Так что просто разбить его на то, что делает этот код Coldfusion (что вы, вероятно, знаете в любом случае):

  1. Это экземпляр объекта типа msxml2.ServerXMLHTTP в памяти.
  2. Затем он использует этот объект для создания XML-документа.
  3. Затем он отправляет его (через HTTP POST) на URL: http://chrdevweb:8080/mellibase/webservice/rest
  4. И, наконец, создается впечатление, что он создаетсяJava-объект (не уверен, что он связан).

Так что в asp.net, использующем c #, почтовый код будет выглядеть так:


   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' - это URL-адрес, на который вы отправляете сообщения, а 'postData' - ваша строка xml.

Чтобы создать документ XML, вы можете использовать документ XML в c # или просто соединить строку.

PS: это не проверено, поэтому где-то может быть синтаксическая ошибка:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...