始终在WCF服务中使用Json返回XML字符串

时间:2015-06-18 03:50:07

标签: c# json web-services wcf

我有一直在返回的WCF服务:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> JSON STRING </string>

我只想要JSON STRING部分。我已经在stackoverflow中阅读了一些帖子并尝试了解决方案,但我无法到达任何地方。这是我的代码:

[ServiceContract]
public interface IUserService
{
    [OperationContract]
    [WebGet(BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json, UriTemplate = "GetUserById?x={uid}")]
    string getUserByUID(string uid);

接口实施:

public class UserService : IUserService
{
    public string getUserByUID(string uid)
    {
        UserDAO mUserDAO = UserService.getUserDAO();
        User mUser = mUserDAO.getUserByUID(Convert.ToInt64(uid));
        if (mUser != null)
        {
            mUserDAO.close();
            return JsonConvert.SerializeObject(mUser);
        }

Web配置:

    <behavior name="restfulBehavior">
      <webHttp />
    </behavior>

Retrofit发出的电话:

D/Retrofit﹕ ---> HTTP GET http:http://localhost/UserService.svc/GetUserById?x=1
D/Retrofit﹕ Content-Type: application/json
D/Retrofit﹕ ---> END HTTP (no body)

从服务器返回

D/Retrofit﹕ <--- HTTP 200 http://localhost/UserService.svc/GetUserById?x=1 (92ms)
D/Retrofit﹕ Content-Length: 446
D/Retrofit﹕ Content-Type: application/xml; charset=utf-8
D/Retrofit﹕ Server: Microsoft-IIS/7.5
D/Retrofit﹕ X-Powered-By: ASP.NET
D/Retrofit﹕ Date: Thu, 18 Jun 2015 03:32:53 GMT
D/Retrofit﹕ OkHttp-Selected-Protocol: http/1.1
D/Retrofit﹕ OkHttp-Sent-Millis: 1434598232505
D/Retrofit﹕ OkHttp-Received-Millis: 1434598232588
D/Retrofit﹕ <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{JSON STRING}</string>
D/Retrofit﹕ <--- END HTTP (446-byte body)

我在这里缺少什么?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

您需要声明内容类型并接受类型才能接收JSON响应。

我不确定你是如何打电话给你的服务的。我将在C#中编写一个示例。但是,它可以很容易地翻译成任何其他语言。

ImageProvider

它对我有用:)

答案 1 :(得分:0)

关于问题这是基础设施问题FTP没有更新网站,我测试时没有反映代码中的更新。

但我发现我的代码也错了。您可以在下面找到现在正在使用的那个。我希望它可以帮助其他任何人。

public class UserService : IUserService
{
    public User getUserByUID(string uid)
    {
        UserDAO mUserDAO = UserService.getUserDAO();
        User mUser = mUserDAO.getUserByUID(Convert.ToInt64(uid));
        if (mUser != null)
        {
            mUserDAO.close();
            return mUser;
        }