有没有人知道为什么谷歌云端点一直抛出unexpected end of stream
异常,甚至在我的应用程序引擎实例实际到达之前?当我调用端点时,我一直得到以下错误。在大多数地方,每隔一次调用之后就会出现错误;在极少数情况下是一致的。
05-06 18:32:28.335: W/System.err(11783): java.io.IOException: unexpected end of stream
05-06 18:32:28.343: W/System.err(11783): at libcore.net.http.FixedLengthOutputStream.close(FixedLengthOutputStream.java:58)
05-06 18:32:28.343: W/System.err(11783): at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:82)
05-06 18:32:28.343: W/System.err(11783): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:980)
05-06 18:32:28.343: W/System.err(11783): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:412)
05-06 18:32:28.343: W/System.err(11783): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:345)
05-06 18:32:28.343: W/System.err(11783): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:463)
…
05-06 18:32:28.343: W/System.err(11783): at android.os.AsyncTask.finish(AsyncTask.java:631)
05-06 18:32:28.343: W/System.err(11783): at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-06 18:32:28.343: W/System.err(11783): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
05-06 18:32:28.343: W/System.err(11783): at android.os.Handler.dispatchMessage(Handler.java:99)
05-06 18:32:28.343: W/System.err(11783): at android.os.Looper.loop(Looper.java:137)
05-06 18:32:28.343: W/System.err(11783): at android.app.ActivityThread.main(ActivityThread.java:4849)
05-06 18:32:28.343: W/System.err(11783): at java.lang.reflect.Method.invokeNative(Native Method)
05-06 18:32:28.343: W/System.err(11783): at java.lang.reflect.Method.invoke(Method.java:511)
05-06 18:32:28.343: W/System.err(11783): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
05-06 18:32:28.343: W/System.err(11783): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
05-06 18:32:28.343: W/System.err(11783): at dalvik.system.NativeStart.main(Native Method)
BTW:我得到这个错误,即使是小操作,如验证一个令牌,这可能是一个20到50个字符的字符串。
我也得到同样的问题,每隔一次我得到这个"意外的流结束"IOE异常。正如你所说,没有日志记录在appengine中。我有一个有几个端点的类,但这只发生在其中一个。
这是Api方法的结构:@ApiMethod(name = "blablabla", httpMethod = HttpMethod.POST)
public static ooooo createCDR(@Named("iiii") String iiii,
@Named("uuuu") String uuuu, @Named("cccc") Long cccc,
@Named("aaaa") int aaaa, User user)
我也有同样的问题。问题是,与端点的通信不能在ui/主线程上运行。最简单的方法是创建简单的ASyncTask,例如如下所示:
private class InsertTask extends AsyncTask<Void, Void, Void> {
Exception exceptionThrown = null;
TargetEndpoint targetEndpoint;
Target target;
public InsertMessageTask(Activity activity, TargetEndpoint targetEndpoint, Target target) {
this.messageEndpoint= messageEndpoint;
this.target= target;
}
@Override
protected Void doInBackground(Void... params) {
try {
targetEndpoint.insertTarget(target).execute();
} catch (IOException e) {
exceptionThrown = e;
}
return null;
}
protected void onPostExecute(Void arg) {
TheActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if (exceptionThrown == null)
Toast.makeText(TheActivity.this, "Success!", Toast.LENGTH_LONG).show();
else
Toast.makeText(TheActivity.this, "Error occured: '" + exceptionThrown.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
}
我同意错误消息可以更详细地说明,但它有它的原因。你不希望在ui线程上运行时间昂贵的方法,因为它可能会降低其性能。