Java 服务器返回了URL的HTTP响应代码:403
我通过一个main方法调用SAOP Webservice,它运行良好。。但当我通过名为method的浏览器调用同一个方法时,它会给我以下错误Java 服务器返回了URL的HTTP响应代码:403,java,jakarta-ee,soap,embedded-jetty,Java,Jakarta Ee,Soap,Embedded Jetty,我通过一个main方法调用SAOP Webservice,它运行良好。。但当我通过名为method的浏览器调用同一个方法时,它会给我以下错误 Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: ------------工作代码如下--------------------------- public class WSConnectionUtil { private stat
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL:
------------工作代码如下---------------------------
public class WSConnectionUtil {
private static final WSConnectionUtil INSTANCE = new WSConnectionUtil();
public SynchronizationServiceWSImpl getSyncServicePort(){
SynchronizationServiceWSImplService service = new SynchronizationServiceWSImplService();
SynchronizationServiceWSImpl servicePort = service.getSynchronizationServiceWSImplPort();
((BindingProvider) servicePort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,getInstance().getSyncUrl());
return servicePort;
}
public static WSConnectionUtil getInstance() {
return INSTANCE;
}
private String getSyncUrl(){
String url = "http://10.2.241.33/synchronize?wsdl";
return url;
}
}
public void syncAll(){
System.out.println("===========syncAll======"+new Date());
SynchronizationRequest request = new SynchronizationRequest();
WSConnectionUtil wsCon = WSConnectionUtil.getInstance();
request.setPosCode("TNCB");
SynchronizationResponse response = wsCon.getSyncServicePort().synchronize(request);
List<String> types = response.getUpdateTypes();
System.out.println("===========types======"+types.size());
}
/**
*
* service for login execution
* - user : Contains user id & password
* @param user
* @return
*
*/
@RequestMapping(value = "/login", method = RequestMethod.POST)
public @ResponseBody ModelMap login(@ModelAttribute ("User")User user ){
String username = user.getName();
String password = user.getPassword();
ModelMap model = new ModelMap();
Boolean status = loginService.login(username, password);
if(status == true){
model.put("status", true);
}
return model;
}
public boolean login(String loginUser,String password){
Steward steward = new Steward();
steward.setStewardId(Integer.parseInt(loginUser));
//List<Steward> stewardsList = stewardDao.getStewardsByCriteria(steward);
//if(stewardsList!=null && stewardsList.size()>0){
// steward = stewardsList.get(0);
//}else{
// LOG.error("Cannot Find a Steward for Login : "+loginUser);
// return false;
//}
TouchPosApplication.getApplication().setUser("SYSTEM");
TouchPosApplication.getApplication().setOutletCode("A");
TouchPosApplication.getApplication().setLoginUserId(loginUser);
// final SynchronizationServiceImpl impl = new SynchronizationServiceImpl();
// impl.syncAll();
new Thread(new Runnable() {
private static final long serialVersionUID = -4094418102152819603L;
@Override
public void run() {
while (true) {
long i =0;
try {
i = 1000 * 60 * 1;
Thread.sleep(i);
} catch (InterruptedException e) {
System.out.println("===InterruptedException==========="+e);
}
SyncUtil.synchronizeAutomatic(true);
}
}
}).start();
LOG.info("::::: Successfuly Logged In :"+loginUser);
return true;
}
公共类WSConnectionUtil{
私有静态最终WSConnectionUtil实例=新的WSConnectionUtil();
公共同步服务wsimpl getSyncServicePort(){
SynchronizationServiceWSImplService=新的SynchronizationServiceWSImplService();
SynchronizationServiceWSImpl servicePort=service.getSynchronizationServiceWSImplPort();
((BindingProvider)servicePort.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_属性,getInstance().getSyncUrl());
返回服务端口;
}
公共静态WSConnectionUtil getInstance(){
返回实例;
}
私有字符串getSyncUrl(){
字符串url=”http://10.2.241.33/synchronize?wsdl";
返回url;
}
}
公共void syncAll(){
System.out.println(“==================================”+新日期());
SynchronizationRequest=新的SynchronizationRequest();
WSConnectionUtil wsCon=WSConnectionUtil.getInstance();
请求。设置POSCODE(“TNCB”);
SynchronizationResponse=wsCon.getSyncServicePort().Synchronization(请求);
列表类型=response.getUpdateType();
System.out.println(“============================”+types.size());
}
----------错误代码---------------------
public class WSConnectionUtil {
private static final WSConnectionUtil INSTANCE = new WSConnectionUtil();
public SynchronizationServiceWSImpl getSyncServicePort(){
SynchronizationServiceWSImplService service = new SynchronizationServiceWSImplService();
SynchronizationServiceWSImpl servicePort = service.getSynchronizationServiceWSImplPort();
((BindingProvider) servicePort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,getInstance().getSyncUrl());
return servicePort;
}
public static WSConnectionUtil getInstance() {
return INSTANCE;
}
private String getSyncUrl(){
String url = "http://10.2.241.33/synchronize?wsdl";
return url;
}
}
public void syncAll(){
System.out.println("===========syncAll======"+new Date());
SynchronizationRequest request = new SynchronizationRequest();
WSConnectionUtil wsCon = WSConnectionUtil.getInstance();
request.setPosCode("TNCB");
SynchronizationResponse response = wsCon.getSyncServicePort().synchronize(request);
List<String> types = response.getUpdateTypes();
System.out.println("===========types======"+types.size());
}
/**
*
* service for login execution
* - user : Contains user id & password
* @param user
* @return
*
*/
@RequestMapping(value = "/login", method = RequestMethod.POST)
public @ResponseBody ModelMap login(@ModelAttribute ("User")User user ){
String username = user.getName();
String password = user.getPassword();
ModelMap model = new ModelMap();
Boolean status = loginService.login(username, password);
if(status == true){
model.put("status", true);
}
return model;
}
public boolean login(String loginUser,String password){
Steward steward = new Steward();
steward.setStewardId(Integer.parseInt(loginUser));
//List<Steward> stewardsList = stewardDao.getStewardsByCriteria(steward);
//if(stewardsList!=null && stewardsList.size()>0){
// steward = stewardsList.get(0);
//}else{
// LOG.error("Cannot Find a Steward for Login : "+loginUser);
// return false;
//}
TouchPosApplication.getApplication().setUser("SYSTEM");
TouchPosApplication.getApplication().setOutletCode("A");
TouchPosApplication.getApplication().setLoginUserId(loginUser);
// final SynchronizationServiceImpl impl = new SynchronizationServiceImpl();
// impl.syncAll();
new Thread(new Runnable() {
private static final long serialVersionUID = -4094418102152819603L;
@Override
public void run() {
while (true) {
long i =0;
try {
i = 1000 * 60 * 1;
Thread.sleep(i);
} catch (InterruptedException e) {
System.out.println("===InterruptedException==========="+e);
}
SyncUtil.synchronizeAutomatic(true);
}
}
}).start();
LOG.info("::::: Successfuly Logged In :"+loginUser);
return true;
}
/**
*
*用于登录执行的服务
*-用户:包含用户id和密码
*@param用户
*@返回
*
*/
@RequestMapping(value=“/login”,method=RequestMethod.POST)
public@ResponseBody ModelMap登录(@modeldattribute(“用户”)用户){
字符串username=user.getName();
字符串password=user.getPassword();
ModelMap model=newmodelmap();
布尔状态=loginService.login(用户名、密码);
如果(状态==真){
模型。放置(“状态”,真);
}
收益模型;
}
公共布尔登录(字符串登录用户、字符串密码){
管家管家=新管家();
setStewardId(Integer.parseInt(logiuser));
//List stewardsList=stewardDao.getStewardsByCriteria(steward);
//if(StewardList!=null&&StewardList.size()>0){
//steward=StewardList.get(0);
//}否则{
//LOG.error(“找不到管理员登录:“+loginUser”);
//返回false;
//}
TouchPosApplication.getApplication().setUser(“系统”);
TouchPosApplication.getApplication().setOutletCode(“A”);
TouchPosApplication.getApplication().setLoginUserId(loginUser);
//最终同步ServiceImpl impl=新同步ServiceImpl();
//impl.syncAll();
新线程(newrunnable()){
私有静态最终长serialVersionUID=-4094418102152819603L;
@凌驾
公开募捐{
while(true){
长i=0;
试一试{
i=1000*60*1;
睡眠(i);
}捕捉(中断异常e){
System.out.println(“==中断异常====”+e);
}
SyncUtil.synchronizeAutomatic(真);
}
}
}).start();
LOG.info(“::成功登录:“+loginUser”);
返回true;
}
如何使用浏览器调用SOAP方法?您是否在浏览器中使用某些REST插件?是的,我使用REST服务@RequestMapping(value=“/login”,method=RequestMethod.POST)public@ResponseBody ModelMap login(@modeldAttribute(“User”)User User User){String username=User.getName();String password=User.getPassword();ModelMap model=new ModelMap();Boolean status=loginService.login(用户名、密码);if(status==true){model.put(“status”,true);}return model;}由于您的方法正在等待POST请求,因此在调用REST服务时必须使用POST方法。'用户参数必须在帖子正文中传递,而不能作为查询参数传递。我使用restclientfirefox插件就是为了实现这些目的,在这里,你可以根据自己的需要灵活地生成请求