【问题标题】:C# trying to "get" from serverC# 试图从服务器“获取”
【发布时间】:2015-01-09 12:53:59
【问题描述】:

所以我有一个 tomcat 服务器,我可以成功发送查询,例如... localhost:8080/AnarchyChatServer/AnarchyChatServlet?message=asdf&sendto=x&sendfrom=y 这将在我的 tomcat 服务器中运行 doGet(),我在 doPost() 中没有任何内容 它将在响应 BODY 中简单地返回 asdf x y 作为 HTML。现在在我的 C# 中,我正在尝试构建查询字符串并发送消息......

 public string sendMessage(string message)
        {
            string url = "";
            string response = "No server response.";
            using (var wb = new WebClient())
            {
                UriBuilder baseUri = new UriBuilder("localhost:8080/AnarchyChatServer/AnarchyChatServlet");
                message = message.Replace("&", "(AMPERSAND)");
                message = message.Replace("?", "(QUESTIONMARK)");
                string queryToAppend = "message=" + message;

                if (baseUri.Query != null && baseUri.Query.Length > 1)
                    baseUri.Query = baseUri.Query.Substring(1) + "&" + queryToAppend;
                else
                    baseUri.Query = queryToAppend;

                url = baseUri.Uri.ToString();

                queryToAppend = "sendto=" + sending;

                if (baseUri.Query != null && baseUri.Query.Length > 1)
                    baseUri.Query = baseUri.Query.Substring(1) + "&" + queryToAppend;
                else
                    baseUri.Query = queryToAppend;

                url = baseUri.Uri.ToString();

                queryToAppend = "sentfrom=" + account[0];

                if (baseUri.Query != null && baseUri.Query.Length > 1)
                    baseUri.Query = baseUri.Query.Substring(1) + "&" + queryToAppend;
                else
                    baseUri.Query = queryToAppend;

                url = baseUri.Uri.ToString();

                try
                {
                    response = wb.DownloadString(baseUri.Uri);
                }
                catch (System.Net.WebException)
                {

                }
            }
            return response;
        }

忽略可怕的代码重用之类的。基本上,查询构建似乎工作正常,就像我输出“url”一样,它将返回带有查询字符串的正确 url,但问题是当我在对服务器进行调用后打印出响应时,它只是说“没有服务器响应”,因为它是在 C# 代码的顶部初始化的。基本上我想知道如何查询服务器。任何见解都会有所帮助。

【问题讨论】:

  • 你能说得更具体点吗?
  • 响应 = wb.DownloadString(baseUri.Uri);没有将响应设置为等于任何值,而是每次我进行此调用时似乎都会发生 System.Net.WebException。网址是正确的,所以一定是我在通话中做错了什么。

标签: java c# tomcat server


【解决方案1】:

您的第一个问题是 Uri 中缺少协议。试试这个:

UriBuilder baseUri = new UriBuilder("http://localhost:8080/AnarchyChatServer/AnarchyChatServlet");

顺便说一句...要在将来调试这些问题,请使用:

catch (Exception ex)
{   <- breakpoint here

}

并检查ex。或者在 Visual Studio 中打开对抛出的 CLR 异常的中断并调试代码(或者只是不要吞下异常)。然后你会看到:

在调试代码时忽略异常通常不是一个好主意...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2021-08-07
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多