我开发了一个GWT应用程序,并在localhost机器上安装了Apache Solr Server。
Solr工作正常,查询返回了所需的结果。
现在将结果嵌入我的GWT应用程序中,我使用GWT的RequestBuilder向Solr服务器发送http请求。
查询到达Solr,因为我可以在命令提示符中查看它。
在GWT端,请求成功,因为我的onResponseRecieved()
被调用。但响应的大小为0,状态代码为0。
我无法找到问题所在。
此外,如果存在同源策略,则应运行onError()
方法,但不是。
以下是我的发送和处理代码
String url = "http://localhost:8983/solr/select/?q=bname:"+whatBox.getText()+"&version=2.2&start=0&rows=10&indent=on";
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, URL.encode(url));
System.out.println("here");
try{
Request req = rb.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
System.out.println("in res");
System.out.println(response.getHeadersAsString());
RootPanel.get("content").clear();
RootPanel.get("content").add(new Label(response.getText()));
}
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
System.out.println("error");
}
});
}catch(RequestException e){
e.printStackTrace();
}
任何帮助将不胜感激!
答案 0 :(得分:0)
我认为你违反了SOP rules。为避免这些问题,我建议您使用JsonpRequestBuilder而不是RequestBuilder
。还要看一个非常有用的社区维基:Ways to circumvent the same-origin policy和How the Same Origin Policy does affect GWT?