2013-05-30 46 views
7

Tôi rất mới với Google App Engine (GAE) và phát triển phần mềm thủy tinh (dành cho Google Glass).Gói API 'urlfetch' hoặc gọi 'Tìm nạp()' không được tìm thấy

tôi cấu hình dự án mirror-quickstart-java trên NetbeansApache tomcat tôi cũng đã thành công trong việc điều hành dự án nhưng tôi đang gặp khó khăn ở phía trước.

Yêu cầu của tôi là, tôi không muốn sử dụng công cụ ứng dụng của Google để phát triển Glassware của riêng mình vì tôi muốn sử dụng một vài API của bên thứ ba. Ngoài ra, công cụ ứng dụng không hỗ trợ javax.imageioBufferedImage apis.

Tôi đã theo câu hỏi trong tâm trí

  1. là bắt buộc phải sử dụng Google app-engine cho gương quickstart-java/phát triển thủy tinh?
  2. Nếu không, tôi gặp phải lỗi sau đây sau bước "Cho phép truy cập" trong khi trao đổi mã thông báo truy cập.
message The API package 'urlfetch' or call 'Fetch()' was not found. 

description The server encountered an internal error that prevented it from fulfilling this request. 

com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'urlfetch' or call 'Fetch()' was not found. 
    com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:100) 
    com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:38) 
    com.google.api.client.extensions.appengine.http.UrlFetchRequest.execute(UrlFetchRequest.java:75) 
    com.google.api.client.http.HttpRequest.execute(HttpRequest.java:980) 
    com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:299) 
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:175) 
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:78) 
    com.google.glassware.AuthServlet.doGet(AuthServlet.java:56) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 

Trả lời

5

Di chuyển các dự án bắt đầu nhanh từ App Engine đến một container J2EE là khá thẳng về phía trước, nhưng nó đòi hỏi một số thay đổi mã:

  1. Thay thế các trường hợp UrlFetchTransport với một sự thay thế như NetHttpTransport. Điều này sẽ tác động đến AuthUtil.javaMirrorClient.java
  2. Thay thế ListableAppEngineCredentialStore.java bằng cách thực hiện mới CredentialStore hoạt động với bất kỳ lớp kiên trì nào bạn thích (Hibernate, SQLite, v.v ...).

Ngoài ra còn có một số thay đổi bạn cần thực hiện đối với quản lý phụ thuộc và xây dựng tập lệnh, nhưng bạn đang ở đó vì điều đó phụ thuộc rất nhiều vào cách bạn định chạy.

1

Nó không phải là cần thiết để sử dụng appengine cho thủy tinh của bạn. Yêu cầu duy nhất là trả lời đăng ký sẽ được gửi cho bạn bằng HTTPS, vì vậy bạn sẽ cần đảm bảo máy chủ của bạn được định cấu hình chính xác để xử lý việc này.

Gói urlfetch dành riêng cho appengine. Bạn nên chắc chắn rằng các thư viện appengine được loại bỏ khỏi dự án của bạn và bất kỳ mã nào tham khảo nó được viết lại để sử dụng các thư viện chuẩn java.net. Vì đây là một phần của xác thực, bạn có thể muốn sử dụng phương thức OAuth2 thay thế chẳng hạn như Google+ Sign-In.

Các vấn đề liên quan