我尝试使用带有安全连接(SSL)的GWT RequestBuilder连接到(本地)Web服务,但是没有建立连接...当我使用普通HTTP连接进行连接时,一切正常。
package com.example.services;
import com.google.gwt.http.client.*;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Timer;
public class RequestBuilderTest extends GWTTestCase {
private static String SERVER_URL = "https://127.0.0.1/api";
private static final int ASSERT_DELAY_IN_MS = 15000;
private static final int TEST_DURATION_IN_MS = 20000;
private int statusCode;
public void testGet() throws Exception {
new RequestBuilder(RequestBuilder.GET, SERVER_URL).sendRequest(null, new RequestCallback() {
public void onError(Request request, Throwable e) {
fail(e.getMessage());
}
public void onResponseReceived(Request request, Response response) {
statusCode = response.getStatusCode();
}
});
delayTestFinish(TEST_DURATION_IN_MS);
new Timer() {
@Override
public void run() {
assertEquals(Response.SC_OK, statusCode);
finishTest();
}
}.schedule(ASSERT_DELAY_IN_MS);
}
@Override
public String getModuleName() {
return "com.example.services.RequestBuilder";
}
}
使用SERVER_URL =“https://127.0.0.1/api”测试失败;
这是junit的堆栈跟踪:
junit.framework.AssertionFailedError:远程测试在127.0.0.1失败 expected = 200 actual = 0
如何强制测试以安全模式运行?我使用eclipse ...我尝试在“运行配置”中设置一些“程序参数”(用于junit测试),但它们不起作用......以下是参数:
-noserver -startupUrl https://192.168.8.147/com.example.services.RequestBuilderTest.JUnit/ -bindAddress 0.0.0.0
如果我只是停用服务器上的SSL,会更好吗?这些测试旨在在持续集成服务器上启动,我想使用SSL测试它们。
答案 0 :(得分:1)
听起来你遇到了same-origin policy问题。像这样在应用程序中嵌入URL本质上是不可靠的。相反,请使用GWT.getModuleBaseUrl()
。