2011-08-26 89 views
2

工作我使用GWT并创建一个HTTP请求,但我在访问从生产版本的文件,即使它的正常工作中的发展问题。我的主程序在客户端有以下要求。GWT请求生成器没有生产工作,但在发展

static final String dataURL = GWT.getModuleBaseURL() + "interpretData"; 

public void onModuleLoad() { 
    requestData(dataURL, new AsyncCallback<String>() { 
     public void onFailure(Throwable caught) { 
      RootPanel.get(holderId).add(new Label(error + ": Asynchronous call failed - " + caught.getLocalizedMessage())); 
      return; 
     } 

    public void onSuccess(String JSON){ 
     try{ 
        // code executed on success 
     } catch (Exception e) { 
      RootPanel.get(holderId).add(new Label(error + ": " + e.getMessage())); 
      return; 
     } 
    } 
    }); 
} 

public static void requestData(final String url, final AsyncCallback<String> callback) { 
     // create a request for the xml data on the server 
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url); 
    builder.setCallback(new RequestCallback() { 
     public void onError(Request request, Throwable exception) { 
      callback.onFailure(exception); 
     } 

     public void onResponseReceived(Request request, Response response) { 
      try { 
       final int responseCode = response.getStatusCode()/100; 
       if (url.startsWith("file:/") || (responseCode == 2) || (responseCode == 0)){ 
        callback.onSuccess(response.getText()); 
       } else { 
        callback.onFailure(new IllegalStateException(" Http Error: #" + response.getStatusCode() + " - " + response.getStatusText())); 
       } 
      } catch (Throwable e) { 
       callback.onFailure(e); 
      }   
     } 
    }); 

在服务器端,我有:

public class interpretData extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 

     response.setContentType("application/json"); 
      // code to return a String 
} 

最后,我的XML文件中有以下内容:

<servlet> 
    <servlet-name>interpretData</servlet-name> 
    <servlet-class>com.gmod.caeli.server.interpretData</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>interpretData</servlet-name> 
    <url-pattern>/caeli/interpretData</url-pattern> 
    </servlet-mapping> 

最后,我可以访问由文件:http://127.0.0.1:8888/caeli/interpretData因此开发版本是完全没问题,但我不知道如何得到它的生产工作(我打电话生产的URL为file:///〜/工作区/ caeli /战争/ caeli/interpretData )我搜索了例子但我没有发现我做错的任何线索。我试着用tomcat设置它,我也有404错误。我觉得我错过了一些小事,所以希望这是足够的信息让别人注意到有什么问题。

回答

1

从我的经验和研究,你试图在生产中请求URL(文件:/// ...)无法通过Web浏览器通过Ajax调用,锚标记,JavaScript的等,这可能是被要求有点混淆/误导,因为您可以手动输入该URL到浏览器并获得预期的结果,但是浏览器不允许此本地资源请求。

+0

好的,我明白了,所以我做了一些更改,以便我可以在tomcat上托管应用程序,但是我现在正面临另一个开发与生产问题,其中我得到了一个405错误的tomcat服务器说: 指定所请求的资源不允许使用HTTP方法(此URL不支持HTTP方法GET)。 我在开发版本中没有这个问题。这是否与tomcat有关? – Ahmed

+0

您要求的新网址是什么? – David

+0

http://127.0.0.1:8080/Caeli/caeli/interpretData – Ahmed

相关问题