小编ani*_*nij的帖子

如何在Java中重定向请求时在HTTP标头中传递数据

是否可以在HTTP Header中传递一些数据,同时将请求从一个服务器重定向到另一个服务器.

这是我的场景,我有一个通用过滤器,每个请求都通过它.现在,基于某些条件,我正在使用API​​将请求重定向到某个不同的服务器 objHttpServletResponse.sendRedirect(strURL).

但是,问题是,当我在响应头中设置一些数据时,如objHttpServletResponse.setHeader("Key", "Value");在重定向的服务器中不可用.

所以,我的问题是,

1.在重定向请求时,有没有办法在标头中传递一些数据?

2.如果没有,在重定向请求时发送一​​些数据的其他可能方法是什么?

请注意:其他几种方式,比如

使用URL参数: objHttpServletResponse.sendRedirect(strURL+"?param="+ strParamValue);

要么

使用会话: HttpSession session = httpRequest.getSession(); session.setAttribute("Key", "Value");

不是我所期待的.

java http-redirect http-headers servlet-filters

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

如何在tomcat 7中使用Jersey 2中的异步回调

如何在tomcat服务器中使用jersey 2的异步回调.我在Jersey手册中找到了一些例子:https://jersey.java.net/documentation/latest/user-guide.html#d0e8496.

但是当我想用以下代码测试以下代码时会出现问题:https://jersey.java.net/documentation/latest/user-guide.html#d0e8615代码,如Jersey 2手册中所述.

-------------------------------------------------- -------------------------------------------------- ---------------------------

因为,手动版本已经更改,我在这里发布代码:

这是我的服务:

            import javax.ws.rs.GET; 
            import javax.ws.rs.Path; 
            import javax.ws.rs.Produces; 
            import javax.ws.rs.container.AsyncResponse; 
            import javax.ws.rs.container.CompletionCallback; 
            import javax.ws.rs.container.Suspended; 
            import javax.ws.rs.core.MediaType; 
            import javax.ws.rs.core.Response; 

            @Path("/resource") 
            public class AsyncResource { 
                private static int numberOfSuccessResponses = 0; 
                private static int numberOfFailures = 0; 
                private static Throwable lastException = null; 

                @GET 
                public void asyncGetWithTimeout(@Suspended final AsyncResponse asyncResponse) { 
                System.out.println("AsyncResource.asyncGetWithTimeout()"); 
                    asyncResponse.register(new CompletionCallback() { 
                        @Override 
                        public void onComplete(Throwable throwable) { 
                            if (throwable == null) { …
Run Code Online (Sandbox Code Playgroud)

java rest tomcat asynchronous jersey-2.0

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

MapStruct:将2个对象映射到第3个对象

我有Object1和Object2.现在,我想映射object3,其中包含1和2的属性.

说,我有2个对象:

1. User: {first_name, last_name, id}
2. Address: {street, locality, city, state, pin, id}
Run Code Online (Sandbox Code Playgroud)

现在,有了这些,我想把它映射到

User_View: {firstName, lastName, city, state}.
Run Code Online (Sandbox Code Playgroud)

其中,first_name和last_name来自User对象,来自Address对象的city&state.

现在,我的问题是,怎么做?

但是,目前,我这样做

@Mapper    
public abstract class UserViewMapper {
        @Mappings({
                    @Mapping(source = "first_name", target = "firstName"),
                    @Mapping(source = "last_name", target = "lastName"),
                    @Mapping(target = "city", ignore = true),
                    @Mapping(target = "state", ignore = true)

            })
            public abstract UserView userToView(User user);

        public UserView addressToView(UserView userView, Address address) {

                if (userView == null) {
                    return null;
                }

                if (address == null) …
Run Code Online (Sandbox Code Playgroud)

java object-object-mapping mapstruct

10
推荐指数
1
解决办法
9431
查看次数

线程"main"中的异常java.lang.NoClassDefFoundError:无法初始化类com.sun.jersey.core.header.MediaTypes

我正试图经营一个球衣客户并面对这个问题.

WS类:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/hello")
public class HelloWorldService {

@GET
@Path("/vip")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@QueryParam("msg") String msg) {

    String output = "Jersey say : " + msg;

    return Response.status(200).entity(output).build();

}

}
Run Code Online (Sandbox Code Playgroud)

客户类:

    import com.sun.jersey.api.client.Client;
    import com.sun.jersey.api.client.ClientResponse;
    import com.sun.jersey.api.client.WebResource;

    public class JerseyClientGet {

        public static void main(String[] args) {
            try {

                Client client = Client.create();

                WebResource webResource = client
                        .resource("http://localhost:8080/TestRest/rest/hello/vip?msg=ABCD");

                ClientResponse response = webResource.accept("application/json")
                        .get(ClientResponse.class);

                if (response.getStatus() != 200) {
                    throw …
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey jersey-client

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

将数据从http服务器端推送到浏览器客户端的最佳方法

将数据从服务器端推送到客户端的最佳方式是什么,而客户端是Web浏览器.

我的服务器端是用java构建的,客户端是在html,js,ajax上.

通信模式是HTTP协议.

javascript java ajax push-notification

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

Java:在数据加密过程中是否有任何编码器不包含正斜杠?

我需要以这样的URL传递加密格式的数据, http://localhost:8080/app/{encrypted_data}

那么,是否有编码器中不包含正斜杠(/)的编码器

请注意:我不想手动从编码数据中用另一个字符替换'/'.

.................................................. .................................................. ..........

编辑:Oleg Estekhin评论使用Base64 URL安全编码工作正常,我只是在这里添加一个例子.

示例:编码:

String str = "subjects?_d=1";
byte[] bytesEncoded = Base64.encodeBase64URLSafe((str.getBytes()));
Run Code Online (Sandbox Code Playgroud)

解码:

Base64 decoder = new Base64(true);
byte[] decodedBytes = decoder.decode(new String(bytesEncoded));
System.out.println(new String(decodedBytes));
Run Code Online (Sandbox Code Playgroud)

输出:

c3ViamVjdHM_X2Q9MQ
subjects?_d=1
Run Code Online (Sandbox Code Playgroud)

java encryption encoding

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

如何识别请求类型是同步还是异步

实际上,我的要求是,客户端可以以同步(请求-响应)或异步(请求-确认-响应)模式调用我的基于休息的服务。现在,根据请求类型,我必须遵循模式。

现在,我的问题是,有没有办法,从请求本身,默认情况下,是否有任何指示符,它会告诉客户期望的请求 - 响应模型。服务协议是http。

如果不可能,那么处理这种情况的最佳做法是什么。

java rest asynchronous web-services http

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

节点: Express:如何处理 application/octet-stream;charset=;UTF-8 响应?

我有一个节点表达应用程序。在那里,我尝试调用一个 API,该 API 将原始 xlsx 对象响应为

'内容类型':'应用程序/八位字节流;字符集=;UTF-8'

编写我如何调用 API 的代码:

var unirest = require("unirest");

var reqClient = unirest("POST", "https://api.application.com/getExcel");
reqClient.headers({ "Authorization": "Bearer " + req.session.passport.user.token, 
"content-type": req.headers['content-type'], "application/json"});
reqClient.type("json");
reqClient.send(JSON.stringify(requestbody));
reqClient.end(function(res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试用这些数据做两件事。

  1. 将其写入 Excel 文件。下面是我尝试的代码:
    let data = res.body // res is the response coming from the API
    let buf = Buffer.from(data);
    excelfile = fs.createWriteStream("result.xlsx");
    excelfile.write(buf);
    excelfile.end();
Run Code Online (Sandbox Code Playgroud)
  1. 尝试将其发送到将创建 excel 文件的UI 。下面是我的代码:
    let data = res.body // res is the response …
Run Code Online (Sandbox Code Playgroud)

content-type utf-8 node.js express unirest

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

Jackson:如何忽略字段的数据类型不匹配

我在 Spring Rest 模板中收到 json 响应,并尝试将其投射到自定义对象上。

@JsonIgnoreProperties(ignoreUnknown = true)
public class DataItems {

private String deviceId;
    private String dataSourceName;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.ms+0000")
    private Date timestamp;
    private String mName;
    private String mVersion;
    private double value;


    /**
     * constructors and getters and setters
     */
Run Code Online (Sandbox Code Playgroud)

现在,有时,我得到的这个双精度值是字符串垃圾值。

那么,如何在投射时忽略这些记录。下面是我的铸造代码。

ObjectMapper mapper = new ObjectMapper();
DataItems dataItems =  mapper.readValue(/*String*/json),DataItems.class);
Run Code Online (Sandbox Code Playgroud)

示例 Json:

[{
        "value": 26.394289,
        "deviceId": "97572545-3768-6070-0B09-1A566D8F6BC1",
        "dataSourceName": "AQM",
        "timestamp": "2016-11-04T05:24:55.000+0000",
        "mName": "SENS_TEMPERATURE",
        "mVersion": "1.0"
      },
      {
        "value": 26.396435,
        "deviceId": "97572545-3768-6070-0B09-1A566D8F6BC1",
        "dataSourceName": "AQM",
        "timestamp": …
Run Code Online (Sandbox Code Playgroud)

java spring json jackson

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

无法登录kie-drools-wb-distribution-wars-6.0.0.Final-jboss-as7.0

我下载了kie-drools-wb-distribution-6.0.0.Final.zip并在jboss-as-7.1中部署了kie-drools-wb-distribution-wars-6.0.0.Final-jboss-as7.0.war .1.Final在独立模式下.现在,当我想使用默认用户名登录时:admin密码:admin.它说登录失败:用户名或密码无效

日志显示此错误消息.

    17:38:30,683 ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http--127.0.0.1-8080-1) Login failure: javax.security.auth.login.FailedLoginException: Password Incorrect/Password Required
        at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:270) [picketbox-4.0.7.Final.jar:4.0.7.Final]
        at org.jboss.security.auth.spi.UsersRolesLoginModule.login(UsersRolesLoginModule.java:155) [picketbox-4.0.7.Final.jar:4.0.7.Final]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_21]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_21]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_21]
        at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_21]
        at javax.security.auth.login.LoginContext.invoke(LoginContext.java:784) [rt.jar:1.7.0_21]
        at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203) [rt.jar:1.7.0_21]
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:698) [rt.jar:1.7.0_21]
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:696) [rt.jar:1.7.0_21]
        at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_21]
        at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:695) [rt.jar:1.7.0_21]
        at javax.security.auth.login.LoginContext.login(LoginContext.java:594) [rt.jar:1.7.0_21]
        at org.jboss.security.authentication.JBossCachedAuthenticationManager.defaultLogin(JBossCachedAuthenticationManager.java:449) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final]
        at org.jboss.security.authentication.JBossCachedAuthenticationManager.proceedWithJaasLogin(JBossCachedAuthenticationManager.java:383) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final]
        at org.jboss.security.authentication.JBossCachedAuthenticationManager.authenticate(JBossCachedAuthenticationManager.java:371) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final]
        at org.jboss.security.authentication.JBossCachedAuthenticationManager.isValid(JBossCachedAuthenticationManager.java:160) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final]
        at org.jboss.as.web.security.JBossWebRealm.authenticate(JBossWebRealm.java:214) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
        at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:280) [jbossweb-7.0.13.Final.jar:]
        at …
Run Code Online (Sandbox Code Playgroud)

java jboss drools

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