是否可以在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");
不是我所期待的.
如何在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) 我有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) 我正试图经营一个球衣客户并面对这个问题.
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) 将数据从服务器端推送到客户端的最佳方式是什么,而客户端是Web浏览器.
我的服务器端是用java构建的,客户端是在html,js,ajax上.
通信模式是HTTP协议.
我需要以这样的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) 实际上,我的要求是,客户端可以以同步(请求-响应)或异步(请求-确认-响应)模式调用我的基于休息的服务。现在,根据请求类型,我必须遵循模式。
现在,我的问题是,有没有办法,从请求本身,默认情况下,是否有任何指示符,它会告诉客户期望的请求 - 响应模型。服务协议是http。
如果不可能,那么处理这种情况的最佳做法是什么。
我有一个节点表达应用程序。在那里,我尝试调用一个 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)
现在我正在尝试用这些数据做两件事。
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)
let data = res.body // res is the response …
Run Code Online (Sandbox Code Playgroud) 我在 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) 我下载了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 ×9
asynchronous ×2
rest ×2
ajax ×1
content-type ×1
drools ×1
encoding ×1
encryption ×1
express ×1
http ×1
http-headers ×1
jackson ×1
javascript ×1
jax-rs ×1
jboss ×1
jersey ×1
jersey-2.0 ×1
json ×1
mapstruct ×1
node.js ×1
spring ×1
tomcat ×1
unirest ×1
utf-8 ×1
web-services ×1