【问题标题】:How to call Java Servlet from Windows Phone 7如何从 Windows Phone 7 调用 Java Servlet
【发布时间】:2012-06-20 09:25:12
【问题描述】:

我已经搜索了很长一段时间,但无法直接回答如何从 windows phone 7 API 调用 java servlet?我已经阅读了有关“WebClient”和“HttpWebRequest”的信息,但是对于普通 C# 和 windows phone,实现似乎有所不同。

我的方法(或者更确切地说是空壳)看起来像这样:

public Login(string userName, password){

   string servletUrl = "http://172.12.5.35:8080/SomeService/login?u="+userName+"&p="+password;

   //Somehow to call the servlet>>

}

我是一名 Java 编码员,虽然语法几乎相同,但我已经陷入了为 windows phone 编码的深层次。

同样值得一提的是 servlet 返回 JSON。在 C# 中如何处理?

提前感谢您朝着正确的方向前进!


我使用 HttpWebRequest 的尝试:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(servletUrl);
HttpWebResponse response = (HttpWebRequest)request.BeginGetResponse();

但我看到“BeginGetResponse()”有 2 个参数,即 AsyncCallback 和对象状态。这两个论点是什么?在这种情况下我的论点是什么?

【问题讨论】:

    标签: c# json windows-phone-7 servlets


    【解决方案1】:

    我已经阅读了有关“WebClient”和“HttpWebRequest”的信息,但对于普通 C# 和 windows phone,实现似乎有所不同。

    嗯,它不支持同步 API,仅此而已。 WP7 API(和一般的 Silverlight)有很多方面是完整桌面框架的子集。您需要异步思考 - 您将开始发出请求,并在收到响应时触发回调。

    请注意,这与您正在与之交谈的网络服务器的实现无关。无论您是在与 Java servlet、Rails 应用程序还是其他任何通信,您都将编写相同的代码。

    同样值得一提的是 servlet 返回 JSON。在 C# 中如何处理?

    我个人喜欢Json.NET,并已在 Windows Phone 7 上成功使用。

    【讨论】:

    • 感谢乔恩稍微澄清一下。就我个人而言,如果可能的话,我宁愿使用 HttpWebRequest,如果您查看我编辑过的帖子,您会看到我对此提出的问题...
    • @DeanGrobler:第一个是回调。第二个是状态,它只是为了方便而传递给回调。您需要了解委托以创建回调。尽管如此,所有这些都最好通过教程和文档来完成,而不是通过关于 SO 的问题。搜索“WebRequest tutorial silverlight”会获得不少成功。
    • 再次感谢。我同意,否则我会整天坐在这里问Q。最后一个问题,您如何看待 nkchandra 的回答?应该工作吗?
    【解决方案2】:

    以下是发出 Web 请求以获取 JSON 数据的示例代码

    WebClient client = new WebClient();
    client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
    client.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/public_timeline.json", UriKind.Absolute));
    

    DownloadStringCompleted 处理程序是,

    void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        var jsonResponse= e.Result; // To check whether the json response is obtained or not
        var jsonData = JsonConvert.DeserializeObject<SomeObject>(e.Result);
    }
    

    在上面的代码中,SomeObject 是您要将 JSON 数据转换为的 Class。

    另外,将您的 json URL 或 json Data 粘贴到 this link 以生成适合您的类。

    【讨论】:

    • “client_DownloadStringCompleted”到底是什么?这个Json一旦被检索到又存储在什么变量中?
    • 如果 jsonToCsharp 从我返回的 Json 中生成 2 个类怎么办?
    • JsonConvert 是来自NewtonSoft.json 的一个类。当它生成两个类时,取父类,理想情况下命名为 RootObject
    • 啊,我明白了,然后是最后一个问题(我保证)。从 codeplex 下载 json.NET zip 文件后,如何在我的 windows phone 项目中添加/合并该库? - 没关系,明白了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多