簡體   English   中英

無法從Java中的CXF REST Web服務讀取或解析純字符串響應

[英]Can't read or parse Plain String Response from CXF REST Web Service in Java

REST服務已在SpringMVC中正確實現,部署並返回正確的結果字符串,

@RestController
public class RESTServiceController {

    @GET
    @Produces("application/json") 
    @RequestMapping("/restUrl")
    public String getResult() {
        JSONObject json = new JSONObject();
        json.put("result", Boolean.TRUE);
    }
}

測試此Web服務時,我得到正確的輸出,

{"result":true}

問題是調用者通過CXF獲取Response對象,但是我不知道如何解析Response。 我不需要自定義對象。 我需要的只是直接字符串,我只想查看我的輸出字符串。

String restServiceURI = "http://www.asite.com/restUrl";
WebClient client = WebClient.create(restServiceURI,true);
Response resp = client.get();
//String entity = (String)resp.getEntity; <-- Also tried this to cast to a string

問題是,響應長度為0,狀態為EmptyInputStream getEntity InputStream根據調試器顯示的內容帶回EmptyInputStream

Response對象沒有我可以在調試器中看到的任何信息。

我怎樣才能找回我的直接字符串? 有例子嗎?

您正在嘗試混合使用Spring Rest和CxF rest。 使用Spring Rest或CXF Rest。

如果您想使用Spring Rest,如下所示

@Service
public class RESTServiceController {

    @RequestMapping("/restUrl")
    public @ResponseBody MyClass getResult() {
        return myClass;
    }
}

或CXF,如下所示。

@Service
public class RESTServiceController {

    @GET
    @Produces("application/json") 
    public MyClass getResult() {
        return myClass;
    }
}

注意:您無需顯式使用json轉換,Spring Rest和CXF都必須具有將對象轉換為json字符串的功能。

但是,您的問題並不僅限於此,我相信您已啟用spring-security,該安全性通過登錄頁面發送redirect(302)響應。 您可以通過啟用客戶端登錄來驗證來自服務器的響應。

        WebClient.getConfig(client).getInInterceptors().add(new LoggingInInterceptor());
        WebClient.getConfig(client).getOutInterceptors().add(new LoggingOutInterceptor());

暫無
暫無

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

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