小编ast*_*eri的帖子

如何从另一个方法将@FormParam传递给RESTful服务?

免责声明:我确实搜索了这个问题的答案,是的,我确实找到了另一个问题:https://stackoverflow.com/questions/10315728/how-to-send-parameters-as-formparam-to-webservice.但首先,这个问题是询问Javascript,而我问的是Java,其次,它无论如何都没有答案.所以关于这个问题......

使用RESTful服务,将@QueryParams 传递到@GET服务中相当容易,因为您可以简单地将变量名称/值对附加到URL并使用它从程序中命中服务器.有没有办法用@FormParams 做这个?

例如,假设我有以下RESTful服务:

@POST
@Produces("application/xml")
@Path("/processInfo")
public String processInfo(@FormParam("userId") String userId,
                          @FormParam("deviceId") String deviceId,
                          @FormParam("comments") String comments) {
    /*
     * Process stuff and return
     */
}
Run Code Online (Sandbox Code Playgroud)

...让我说我的程序中的其他地方还有另一种方法,如下所示:

public void updateValues(String comments) {

    String userId = getUserId();
    String deviceId = getDeviceId();

    /*
     * Send the information to the /processInfo service
     */

}
Run Code Online (Sandbox Code Playgroud)

如何在第二种方法中执行注释掉的操作?

注意:假设这些方法不在同一个类或包中.还假设RESTful服务托管在运行方法的计算机不同的服务器上.因此,您必须访问该方法并以RESTful方式传递值.

谢谢您的帮助!

java rest web-services

5
推荐指数
1
解决办法
3万
查看次数

是否有任何级别的混淆可以“欺骗”instanceof?

我一直在玩这个,到目前为止我还没有找到任何隐藏或欺骗instanceof返回的方法false通过混淆层隐藏它的类型来,但这并不意味着这是不可能的,因为我远离最了解 Java 的人。所以特地来请教专家。

我尝试了以下组合,在每种情况下,instanceof操作员都能够识别对象的真实/基本类型。

public class Test {

    public static void main(String[] args) {
        Object o = new TestObject();
        printType("Base Class", o);

        o = (TestSuperObject)(new TestObject());
        printType("Super Class", o);

        o = (TestInterface)(new TestObject());
        printType("Interface", o);

        o = (TestInterface)((TestSuperObject3)(new TestObject3()));
        printType("Interface on Super Class", o);

        o = (TestSuperObject3)((TestInterface)(new TestObject3()));
        printType("Super Class on Interface", o);
    }


    private static void printType(String testCase, Object o) {
        System.out.println(testCase);
        System.out.println("TestObject:" + (o instanceof TestObject));
        System.out.println("TestObject2:" + (o instanceof TestObject2));
        System.out.println("TestObject3:" …
Run Code Online (Sandbox Code Playgroud)

java polymorphism casting instanceof

5
推荐指数
1
解决办法
406
查看次数

Jersey UniformInterfaceException尝试代理REST POST服务

当我尝试执行以这种方式构造的代码时,我一直收到406 HTTP响应.我已经尝试过多次重构代码和输入,但是我仍然收到这个错误,而且我已经达到了我甚至不知道要调试什么的程度.异常似乎表明该post()方法不是@FormParam以所需格式提供s,但正如您所看到.accept(MediaType.APPLICATION_FORM_URLENCODED)@Consumes(MediaType.APPLICATION_FORM_URLENCODED)那样,确实匹配.

我使用Firefox附加HTTPRequester传入@FormParams并确保我使用适当的Content-Type(application/x-www-form-urlencoded)传递它们.我已经没有东西要检查了.有没有人有任何想法?


代理服务

Client client = Client.create();
WebResource service = client.resource(myURL);

Form form = new Form();
form.add("value1", value1);
form.add("value2", value2);
form.add("valueN", valueN);

String returnValue = service.accept(MediaType.APPLICATION_FORM_URLENCODED).post(String.class, form);
Run Code Online (Sandbox Code Playgroud)

实际服务

@POST
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("/theService")
public String theService(
        @FormParam("value1") String value1,
        @FormParam("value2") String value2,
        @FormParam("valueN") String valueN) {

    String returnValue = null;

    /*
     * Do Stuff
     */

    return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

例外

com.sun.jersey.api.client.UniformInterfaceException: POST http://theURL/theService returned a response status …
Run Code Online (Sandbox Code Playgroud)

java rest post jersey firefox-addon

4
推荐指数
1
解决办法
2万
查看次数

多个线程使用ScheduledExecutorService以固定间隔并行运行

目标:每5秒监视5个json URL,其中5个线程并行运行.

我想运行多个并行线程来监视JSON URL,每个时间间隔为n秒.我正在使用ScheduledExecutorService这个.

ScheduledExecutorService executor = Executors.newScheduledThreadPool(5);

for(NetworkBwXmlObject x : xmlDsList) {
    executor.scheduleAtFixedRate(new processJsonUrl(x.getJsonUrl(),x.getId(), ctx), 0, 5, TimeUnit.SECONDS);
}

class processJsonUrl implements Runnable {

}
Run Code Online (Sandbox Code Playgroud)

这是创建5个线程来监控5个URL的正确方法.我不想在这里使用线程池.所有5个线程必须处于活动状态,直到应用程序的生命周期.

可以ScheduledExecutorService帮助我的方案或有另一种方法来实现这一目标?

谢谢

java concurrency multithreading executorservice scheduledexecutorservice

4
推荐指数
2
解决办法
1655
查看次数

将常量设为 null 是否有目的?

我最近在一些代码中看到一些内容,这让我很好奇它是否真的具有某种优化或性能影响。常量文件中有这样一行:

public static final Object NULL = null;
Run Code Online (Sandbox Code Playgroud)

然后,在整个代码中,null将使用 来引用它,而不是显式使用关键字Constants.NULL

我以前见过这样的事情:

public static final String EMPTY_STRING = "";
Run Code Online (Sandbox Code Playgroud)

""...如果试图避免创建大量重复实例,这似乎至少有一点意义。但它真的有什么区别吗null,因为它实际上不是任何类型的对象?我有什么遗漏的吗?

java null constants

4
推荐指数
1
解决办法
8720
查看次数

MongoDB作为windows服务并设置replicaSet

我安装了MongoDB,并将其设置为windows服务.当我尝试设置replicaSet时,我收到错误"通常只允许使用每个套接字地址(协议/网络地址/端口).对于socket:0.0.0.0:27017".

所以,我已经停止了Windows服务并设置了replicaSet.replicaSet现在正常工作.但是,我没有看到Windows服务正常运行.这是否意味着我无法同时设置replicaSet和MongoDB服务?

replication mongodb

4
推荐指数
1
解决办法
8834
查看次数

获取网络计算机名称

我正在寻找一种更好的方法来使用Java在我的LAN网络中获取计算机名称.我试过了:

byte[] ip = {(byte)192,(byte)168,(byte)178,(byte)1};
    for(int i=1;i<255;i++)
    {
        ip[3] = (byte)i;
        try
        {
            InetAddress addr = InetAddress.getByAddress(ip);
            String s = addr.getHostName();
            System.out.println(s);
        }
        catch(UnknownHostException e)
        {
            System.out.println(e.getMessage());
        }
    }
Run Code Online (Sandbox Code Playgroud)

......但它太慢了.还有其他方法吗?

我在Windows上.

任何想法都表示赞赏.

java

4
推荐指数
1
解决办法
1878
查看次数

使用`final`方法

我知道final关键字在方法上的一个用途是强制子类使用相同的方法实现.但是,通过允许编译器将对方法的调用转换为内联java代码来提高效率意味着什么呢?我刚看过这个,但不太明白这个想法.

在这种程度上,我不理解内联Java代码的含义.如何final执行对方法的调用?在编译调用final方法的代码的过程中,Java是否有任何特殊的通知或做什么?

java final keyword

4
推荐指数
1
解决办法
127
查看次数

为什么在父方法中返回子类名?

我有一个叫做类的类Entity,它是abstract我在整个程序中使用的许多其他对象的超类(对于这个例子,Apple类).

在许多方法中,我通过打印打印语句的类名来打印调试语句,然后是实际的调试消息.然而,令我惊讶的是,当我从一个实例调用继承的方法时Apple,Apple打印的是类名而不是类名Entity(这是方法实际所在的位置).

为了获得一个更容易发布代码片段的相关示例,我已经覆盖了toString()这样:

public abstract class Entity {

    private String name;

    @Override
    public String toString() {
        return getClass().getSimpleName() + " " + (name != null ? name : super.hashCode());
    }
}
Run Code Online (Sandbox Code Playgroud)

因为我没有在Apple类中进一步覆盖此方法,我希望返回的String的第一部分Entity不是Apple.然而它又返回了Apple(对于这个用例来说,它实际上很好用,但仍然有点令人费解).

我尝试查看实现Object#getClass(),但无法将其声明为native方法.

public final native Class<?> getClass();

谁能解释为什么会这样?

java inheritance

3
推荐指数
1
解决办法
918
查看次数

有没有办法让字典键成为范围?

如果这很明显,请原谅我,但我对 Python 非常非常陌生。我已经找到了从字典中获取多个键的方法,但这不是我想要做的。

基本上我正在寻找这样的东西:

my_dict = { "1-10" : "foo",
            "11-20" : "bar",
            # ...
            "91-100" : "baz" }
Run Code Online (Sandbox Code Playgroud)

...但其中的键实际上不是字符串,并且给定范围内的任何数字都会映射到该值。例如,my_dict[9]应该返回foo,就像my_dict[3]应该一样。我想过使用显式数组,如下所示,但它不起作用:

my_dict = { [1, 2, 3, ..., 10] : "foo",
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是字典的有效用例,或者是否应该使用其他数据结构。但 Python 有一种总是让我惊讶的方式。那么有人知道 Python 的魔力可以让这项工作发挥作用吗?

python dictionary key

3
推荐指数
1
解决办法
5868
查看次数