所以我有一个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#代码的顶部初始化的。基本上我想知道如何查询服务器。任何见解都会有所帮助。
答案 0 :(得分:4)
你的第一个问题是Uri缺乏协议。试试这个:
UriBuilder baseUri = new UriBuilder("http://localhost:8080/AnarchyChatServer/AnarchyChatServlet");
顺便说一句......要在将来调试这些问题,请使用:
catch (Exception ex)
{ <- breakpoint here
}
并检查ex
。或者在Visual Studio中打开抛出的CLR异常并调试代码(或者只是不要吞下异常)。然后你会看到这个:
在调试代码时忽略异常通常不是一个好主意......