none
Java代码翻译成C#代码 RRS feed

  • 问题

  • 以下代码是Ajax对基于REST的Web服务的访问的处理代码,但我没学过java,有些类不知道如何与.net中的类相对应,请哪位学过Java的帮忙翻译成C#的。

    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import javax.servlet.*;
    import javax.servlet.http.*;

    public class YahooSearchGatewayServlet extends HttpServlet {

        private static final String YAHOO_SEARCH_URL =
            "http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=thunderboltsoftware"
            + "&type=all";
       
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
           
            String url = YAHOO_SEARCH_URL + "&" + request.getQueryString();
           
            HttpURLConnection con = (HttpURLConnection)new URL(url).openConnection();
            con.setDoInput(true);
            con.setDoOutput(true);
           
            con.setRequestMethod("GET");
           
            //Send back the response to the browser
            response.setStatus(con.getResponseCode());
            response.setContentType("text/xml");
           
            BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String input = null;
            OutputStream responseOutput = response.getOutputStream();
           
            while((input = reader.readLine()) != null) {
                responseOutput.write(input.getBytes());
            }
       
        }
       
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
    }

    如果您还需要HTML的代码,如下便是:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Yahoo! Search Web Services</title>

    <script type="text/javascript">
    var xmlHttp;

    function createXMLHttpRequest() {
        if (window.ActiveXObject) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        }
    }
       
    function doSearch() {
        var url = "YahooSearchGateway?" + createQueryString() + "&ts=" + new Date().getTime();
        createXMLHttpRequest();
        xmlHttp.onreadystatechange = handleStateChange;
        xmlHttp.open("GET", url, true);
        xmlHttp.send(null);
    }

    function createQueryString() {
        var searchString = document.getElementById("searchString").value;
        searchString = escape(searchString);
       
        var maxResultsCount = document.getElementById("maxResultCount").value;

        var queryString = "query=" + searchString + "&results=" + maxResultsCount;
        return queryString;
    }
       
    function handleStateChange() {
        if(xmlHttp.readyState == 4) {
            if(xmlHttp.status == 200) {
                parseSearchResults();
            }
            else {
                alert("Error accessing Yahoo! search");
            }
        }
    }

    function parseSearchResults() {
        var resultsDiv = document.getElementById("results");
        while(resultsDiv.childNodes.length > 0) {
            resultsDiv.removeChild(resultsDiv.childNodes[0]);
        }
       
        var allResults = xmlHttp.responseXML.getElementsByTagName("Result");
        var result = null;
        for(var i = 0; i < allResults.length; i++) {
            result = allResults[i];
            parseResult(result);
        }
    }

    function parseResult(result) {
        var resultDiv = document.createElement("div");
       
        var title = document.createElement("h3");
        title.appendChild(document.createTextNode(getChildElementText(result, "Title")));
        resultDiv.appendChild(title);
       
        var summary = document.createTextNode(getChildElementText(result, "Summary"));
        resultDiv.appendChild(summary);
       
        resultDiv.appendChild(document.createElement("br"));
        var clickHere = document.createElement("a");
        clickHere.setAttribute("href", getChildElementText(result, "ClickUrl"));
        clickHere.appendChild(document.createTextNode(getChildElementText(result, "Url")));
        resultDiv.appendChild(clickHere);
       
        document.getElementById("results").appendChild(resultDiv);
    }

    function getChildElementText(parentNode, childTagName) {
        var childTag = parentNode.getElementsByTagName(childTagName);
        return childTag[0].firstChild.nodeValue;
    }
    </script>
    </head>

    <body>
      <h1>Web Search Using Yahoo! Search Web Services</h1>
     
      <form action="#">
        Search String: <input type="text" id="searchString"/>
       
        <br/><br/>
        Max Number of Results:
        <select id="maxResultCount">
            <option value="1">1</option>
            <option value="10">10</option>
            <option value="25">25</option>
            <option value="50">50</option>
        </select>
       
        <br/><br/>
        <input type="button" value="Submit" onclick="doSearch();"/>
      </form>
     
      <h2>Results:</h2>
      <div id="results"/>

    </body>


    做最好的自己
    2009年7月23日 7:51

答案

  • 哈,楼主您还真是什么问题都发啊!
    .Net下对应了两个类 System.Net.HttpWebRequest和System.Net.HttpWebResponse,把这两个类弄明白了,您自己就可以翻译了。
    2009年7月23日 10:27
    版主
  • 您好,不需要看那么多,就研究我上面给出的两个类就行,也不在System.Web下,在System.Net下。
    一个表示请求,一个表示响应。
    2009年7月24日 2:49
    版主
  • 应该说,Web开发的基础是一些协议,比如HTTP,其是标准,任何实现技术如JSP、ASP.NET,都要遵循这个标准,只不过实现的方式、封装的方式不一样,建议你先系统学习ASP.NET的基础知识,这样你就能够理解了,你的代码是Java Servlet的代码,如果你要比较同样的协议,在ASP.NET和Servlet中的实现有何不同,建议你也学习一下Servlet,学到最后,你就会发现其实就是实现方式不一样,但原理都是一样的。
    http://hi.baidu.com/2009ajun
    2009年7月24日 4:41
  • 应该说,Web开发的基础是一些协议,比如HTTP,其是标准,任何实现技术如JSP、ASP.NET,都要遵循这个标准,只不过实现的方式、封装的方式不一样,建议你先系统学习ASP.NET的基础知识,这样你就能够理解了,你的代码是Java Servlet的代码,如果你要比较同样的协议,在ASP.NET和Servlet中的实现有何不同,建议你也学习一下Servlet,学到最后,你就会发现其实就是实现方式不一样,但原理都是一样的。
    http://hi.baidu.com/2009ajun

    如果我想系统学习ASP.NET的基础知识,应该怎样学起呢?
    做最好的自己

    我推荐:
    你先看《ILLUSTRATED C# 2008 》,有中译本,书名:《C#图解教程》,绝对不错的C#入门书籍。->先打下扎实的语言基础。
    然后呢,看asp.net的基础书籍,推荐《ASP.NET 3.5最佳实践--使用VISUAL C#》或是《ASP.NET 3.5入门与经典--涵盖C#和VB.NET(第5版)》。->接下来学习asp.net基础。


    http://hi.baidu.com/2009ajun
    2009年7月24日 12:17

全部回复

  • 哈,楼主您还真是什么问题都发啊!
    .Net下对应了两个类 System.Net.HttpWebRequest和System.Net.HttpWebResponse,把这两个类弄明白了,您自己就可以翻译了。
    2009年7月23日 10:27
    版主
  • 哈,我先看看这两个类,如果问题,再来问。


    做最好的自己
    2009年7月23日 23:16
  • 恕小弟无能,还是大侠帮我看看吧。我把System.Web名称空间下的类都看了看,也不知道该怎么弄。
    做最好的自己
    2009年7月24日 2:34
  • 您好,不需要看那么多,就研究我上面给出的两个类就行,也不在System.Web下,在System.Net下。
    一个表示请求,一个表示响应。
    2009年7月24日 2:49
    版主
  • 应该说,Web开发的基础是一些协议,比如HTTP,其是标准,任何实现技术如JSP、ASP.NET,都要遵循这个标准,只不过实现的方式、封装的方式不一样,建议你先系统学习ASP.NET的基础知识,这样你就能够理解了,你的代码是Java Servlet的代码,如果你要比较同样的协议,在ASP.NET和Servlet中的实现有何不同,建议你也学习一下Servlet,学到最后,你就会发现其实就是实现方式不一样,但原理都是一样的。
    http://hi.baidu.com/2009ajun
    2009年7月24日 4:41
  • 应该说,Web开发的基础是一些协议,比如HTTP,其是标准,任何实现技术如JSP、ASP.NET,都要遵循这个标准,只不过实现的方式、封装的方式不一样,建议你先系统学习ASP.NET的基础知识,这样你就能够理解了,你的代码是Java Servlet的代码,如果你要比较同样的协议,在ASP.NET和Servlet中的实现有何不同,建议你也学习一下Servlet,学到最后,你就会发现其实就是实现方式不一样,但原理都是一样的。
    http://hi.baidu.com/2009ajun

    如果我想系统学习ASP.NET的基础知识,应该怎样学起呢?
    做最好的自己
    2009年7月24日 10:28
  • 应该说,Web开发的基础是一些协议,比如HTTP,其是标准,任何实现技术如JSP、ASP.NET,都要遵循这个标准,只不过实现的方式、封装的方式不一样,建议你先系统学习ASP.NET的基础知识,这样你就能够理解了,你的代码是Java Servlet的代码,如果你要比较同样的协议,在ASP.NET和Servlet中的实现有何不同,建议你也学习一下Servlet,学到最后,你就会发现其实就是实现方式不一样,但原理都是一样的。
    http://hi.baidu.com/2009ajun

    如果我想系统学习ASP.NET的基础知识,应该怎样学起呢?
    做最好的自己

    我推荐:
    你先看《ILLUSTRATED C# 2008 》,有中译本,书名:《C#图解教程》,绝对不错的C#入门书籍。->先打下扎实的语言基础。
    然后呢,看asp.net的基础书籍,推荐《ASP.NET 3.5最佳实践--使用VISUAL C#》或是《ASP.NET 3.5入门与经典--涵盖C#和VB.NET(第5版)》。->接下来学习asp.net基础。


    http://hi.baidu.com/2009ajun
    2009年7月24日 12:17
  • 已成功解决问题,谢谢大侠。
    做最好的自己
    2009年7月25日 0:09