0

外部アプリケーションからappengineへのblobのアップロードに関して、最近何か変更があったのではないかと思いました。わずか3か月前は完全に機能していましたが、http投稿を行ってblobをアップロードするときにハングアップしています。

以前は正常に機能していたコード(以下を参照)は、AppEngineからプルキューをフェッチし(REST APIを使用)、受け取ったこのタスクでいくつかの処理を実行し、結果をAppEngineにBlobとしてアップロードすることで構成されています。BLOBをアップロードするURLは、appengineがblobstoreService.createUploadUrl( "/ upload");を使用して作成します。

次の形式です。

      http://myapp.appspot.com/_ah/upload/AMmfu6aAHnkuS4ngyRJDn7urFFZeBxb_-3P-r7RY9udMvRjLWkEZNJMgUX1DFczNVi-NhIxcFat2AEPXs2IRJ0AOmznSMgcrCKmL7mGAmS7nqtr-UyYFkglD88BwCfzIui9M2yez7DSQ/ALBNUaYAAAAAUGRlEwpeGEc5ozp8Z8sDO33qgCi2AiIE/

AppEngineのログを確認しましたが、/uploadを担当するサーブレットがトリガーされていないようです。

私はこの段階で正直なところアイデアがありません。どんな助けでも大歓迎です!:-)

乾杯、

キリアン

 public boolean uploadAsBlob(String dataToWrite, String uploadURL) {

 try {

      BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(tempFileLocation));

      bufferedWriter.write(dataToWrite);

      bufferedWriter.newLine();

      bufferedWriter.close();

      MultipartEntity entity = new MultipartEntity();

      entity.addPart(blobFileName, new FileBody(new File(tempFileLocation)));

      HttpPost method = new HttpPost(uploadURL);

      method.setEntity(entity);

      final HttpParams httpParams = new BasicHttpParams();

      HttpConnectionParams.setConnectionTimeout(httpParams, 10000);

      DefaultHttpClient httpclient = new DefaultHttpClient(httpParams);


      //It hangs at the following line!

      HttpResponse response = httpclient.execute(method);

      if (response.getStatusLine().getStatusCode() == 200) {

           logger.info("Uploaded blob to url: " + uploadURL);

           return true;

      } else {

           logger.warning("Couldn't upload blob to url: " + uploadURL);

      }



      } catch (Exception e) {

      logger.warning("Exception " + e.getMessage() + " occured while uploading blob to url:" + uploadURL);

      logger.warning("Couldn't upload blob to url: " + uploadURL);

      }

      return false;

      }
4

1 に答える 1

0

blobstoreService.createUploadUrl() を呼び出すときに、GAE が最近 GET パラメーターを保持し始めていることがわかりました。私の場合:

http://www.myapp.com/BG?_=1354631578951

この (予期しない) パラメーターを使用すると、作成された URL は次のようになります。

http://www.myapp.com/_ah/upload/?_=1354631578951/AMmfu6YgVPoJzWXdbf70k6J0zdjEeRnnRJ2PYCb3Jgdwk3SqmKEnFyKgy_17CKwiqbC2HyO-FlPVX-C53W0LjHSywaq7YmLegD97uU-GrpWRdBdWbfKf0Dk/ALBNUaYAAAAAUL4L8iDS5E99f3Wky2p59wWpCD84AqoP/

'_' パラメータがまだ残っていることに注意してください。パラメータを削除する(またはGETからPOSTに移動する)と、問題が修正されました。

于 2012-12-04T14:40:08.173 に答える