Restfull Webservice获取另一个String

时间:2015-05-26 13:41:45

标签: java xml string web-services

我想在String中创建XML。当我通过网络服务器调用它时,它获得相同的字符串时间。从服务器调用它自己,它工作正常。我从同一个方法中获得了两个不同的字符串。

这是构建xml的方法:     StringBuilder builder = new StringBuilder();

var onChange = document.querySelectorAll('.input');
var onChangeSelect = document.querySelectorAll('.select');

for (var i=0; i < onChange.length; i++){
   onChange[i].addEventListener("input", function (event) {
       // event.target.id
       myFunction();
   });
}

我明白了:

    builder.append("<regions>");
    for (Region region : world.getRegions()) {
        builder.append("<region><name>" + region.getName() + "</name>");
        double numCult = 0.0;
        double numAtheists = 0.0;
        double population = region.getPopulation();

        if(region.getHumansByReligion(cult) != null) {
            numCult = (double) region.getHumansByReligion(cult).size();
            numCult = (100.0 * (numCult / population));
        }

        if(region.getHumansByReligion(atheism) != null) {
            numAtheists = (double) region.getHumansByReligion(atheism).size();
            numAtheists = 100.0 * (numAtheists / population);
        }
        double numInfidel = 100.0 - (numAtheists + numCult);

        if(numCult > numAtheists) {
            if(numCult > numInfidel) {
                builder.append("<cult>cult</cult><value>" + (int)numCult + "</value>");
            } else {
                builder.append("<cult>infidel</cult><value>" + (int)numInfidel + "</value>");
            }
        } else if(numAtheists > numInfidel) {
            builder.append("<cult>atheism</cult><value>" + (int)numAtheists + "</value>");
        } else {
            builder.append("<cult>infidel</cult><value>" + (int)numInfidel + "</value>");
        }
        builder.append("</region>");
    }
    builder.append("</regions>");
    return builder.toString();

Webserver方法:

<regions><region><name>North America</name><cult>cult</cult><value>109</value></region><region><name>South America</name><cult>cult</cult><value>105</value></region><region><name>Africa</name><cult>atheism</cult><value>108</value></region><region><name>Europe</name><cult>atheism</cult><value>105</value></region><region><name>Oceania</name><cult>infidel</cult><value>100</value></region><region><name>Asia</name><cult>atheism</cult><value>113</value></region></regions>

这是通过webservice调用的输出:

@Path("/getStats")
    @GET
    @Produces(MediaType.TEXT_XML)
    public String getStats() {
        String xml = game.getGameStats();
        System.out.println("XML"+xml);
        return "<?xml version='1.0' encoding='UTF-8'?>" + xml ;
    }

2 个答案:

答案 0 :(得分:0)

基于你的评论看起来他每次打电话给webserivce 我都会用一个可能的场景回答一个新游戏。

假设我们有Game类(具有游戏逻辑),我们将把它注入我们的名为WebService的Web服务中。可能的解决方案可能是:

@Named
public class Game implements Serializable {

   public String getGameStats() {
      ....
   }

}

@Path("/")
public class WebService {

    // inject the game logic as a dependency
    @Inject
    private Game myGame

    @Path("/getStats")
    @GET
    @Produces(MediaType.TEXT_XML)
    public String getStats() {
        String xml = myGame.getGameStats();
        return "<?xml version='1.0' encoding='UTF-8'?>" + xml ;
    }
   ....
}

现在,如果我们想在整个应用中只有Game的一个实例,请添加@Singleton注释。

提示:不要忘记添加implements Serializable

答案 1 :(得分:0)

我只是在自己的类中创建了一个静态方法来阻止它覆盖......

public class GameManager {
    private static Game game = null;
    private static Player player = null;

    public static void startGame() {
        player = new Player(0, "Demo", "Player", "demo.player@test.com", "DemoPlayer", "1234");
        game = new Game(player,"Demo");

        game.start();
    }

    public static String getGameStats() {
        return game.getGameStats();
    }
}