내 GWTP 앱의 UI 및 백엔드 개발을위한 패키지를 분리하고 싶습니다. 현재 내 UI 액세스 같이 구성 나머지 파견을 사용하여 백엔드 :GWTP를 통한 원격 서비스 액세스 RestPatch
bindConstant().annotatedWith(RestApplicationPath.class).to("/MyProject/api");
나는 로컬 호스트 UI를 (이클립스 플러그인을 사용하여 GWT 응용 프로그램을 실행)를 사용하여 원격 서비스에 액세스 할 수 있습니다. 서버 (I AppEngine에 로그에이를 볼 수 있습니다)에 도달 성공적으로 호출이 사용
bindConstant().annotatedWith(RestApplicationPath.class).to("http://my-app.appspot.com/MyProject/api");
하지만 UI는 항상 위의 설정에 문제가 있습니다 어떤 상태 코드 0
을 다시 가져옵니다 나는 위의 라인을 변경? GWT를 사용하여 원격 서비스에 액세스하려면 다른 작업을해야합니까?
import com.google.gwt.core.client.GWT;
import com.google.gwt.inject.client.AbstractGinModule;
import com.google.inject.Provides;
import com.gwtplatform.dispatch.rest.client.RestApplicationPath;
import com.gwtplatform.dispatch.rest.client.gin.RestDispatchAsyncModule;
public class ServiceModule extends AbstractGinModule {
@Override
protected void configure() {
install(new RestDispatchAsyncModule.Builder().build());
}
@Provides
@RestApplicationPath
String getApplicationPath() {
String baseUrl = GWT.getHostPageBaseURL();
if (baseUrl.endsWith("/")) {
baseUrl = baseUrl.substring(0, baseUrl.length() - 1);
}
return baseUrl + "/MyProject/api";
}
}
getApplicationPath
에 의해 반환되는 문자열 @RestApplicationPath
에 바인딩하고 원활하게 사용됩니다 : 당신은 로컬 호스트에서 모두 작동하는 솔루션을 가지고 싶다면
내 응용 프로그램은 "bindConstant(). annotatedWith (RestApplicationPath.class) .to ("/ MyProject/api ");"를 사용하여 appengine과 localhost 모두 잘 동작합니다. 환경. 데스크톱 (localhost)에서 UI를 실행하고 앱 엔진 컴퓨터에서 실행되는 액세스 서비스를 실행하고 싶습니다. –
오, 지금 무슨 뜻인지 알 겠어. 서버가 반환하는 상태 코드는 무엇입니까? 귀하의 GWT 앱이 상태 0을 수신하지만 귀하의 GAE 앱이 응답 한 실제 HTTP 코드인지 이해합니다. 예를 들어 서버가 200 OK로 응답하고 GWT 앱이 응답을 코드 0으로 해석하면 또 다른 문제 일 수 있습니다. – spg
문제는 CORS가 올바르게 활성화되지 않았기 때문입니다. 자세한 내용은이 스레드를 참조하십시오. https://groups.google.com/forum/#!topic/gwt-platform/RrSOBeaqcEc –