簡體   English   中英

始終在WCF服務中使用Json返回XML字符串

[英]Always returning XML string with Json in a WCF Service

我有永遠返回的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)

我在這里錯過了什么?

先感謝您。

您需要聲明內容類型並接受類型才能接收JSON響應。

我不確定你是怎么稱呼你的服務的。 我將在C#中編寫一個示例。 但是,它可以很容易地翻譯成任何其他語言。

WebClient wc = new WebClient(); 
wc.Headers.Add("Content-Type", "application/json; charset=utf-8");
wc.Headers.Add("Accept", "application/json");
wc.DownloadString("http://yourUrl.com/GetUserById?x=1");

這個對我有用 :)

關於問題,這是一個基礎設施問題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;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM