我的Android应用程序崩溃了以下堆栈跟踪,但是当我从桌面休息客户端尝试它时它运行良好.有谁知道问题可能是什么?
04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient? ---> HTTP GET http://beta2.irealtor.api.iproperty.com.my/Listing?pageSize=10000&orderby=1&order=-1
04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient? If-Modified-Since: 1398235278243
04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient? User-Agent: Android/0.0.20
04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient? Accept: application/json
04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient? Authorization: WFdSeW8vOTJ1Z3BoQlBJMk53VGpaekZRY2pCd1pYSlVXUT090
04-23 16:00:50.449 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient? ---> END HTTP (0-byte body)
04-23 16:00:50.549 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient? ---- ERROR http://beta2.irealtor.api.iproperty.com.my/Listing?pageSize=10000&orderby=1&order=-1
04-23 16:00:50.549 27917-27983/com.iproperty.android.apps.irealtor D/Ireal_IrealtorClient? java.net.ProtocolException: Unexpected status line: {"Data":[],"CustomStatusCode":200,"Status":"success"}HTTP/1.1 200 OK
at com.squareup.okhttp.internal.http.StatusLine.<init>(StatusLine.java:38)
at com.squareup.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:150)
at com.squareup.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:99)
at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:595)
at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:381)
at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:328)
at com.squareup.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:493)
at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:71)
at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:38)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:358) …Run Code Online (Sandbox Code Playgroud) 找不到方法com.squareup.okhttp.OkHttpClient.open,从方法retrofit.client.OkClient.openConnection引用.
下面是我的gradle配置
compile 'com.squareup.okhttp:okhttp:+'
compile 'com.squareup.okhttp:okhttp-urlconnection:+'
compile 'com.squareup.retrofit:retrofit:+'
Run Code Online (Sandbox Code Playgroud) 如何使用XML主题更改操作栏图标或徽标空间的顶部和底部填充或边距?
<style name="Theme.Whycheck" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarItemBackground">@drawable/selectable_background_whycheck</item>
<item name="actionBarStyle">@style/ActionBar.Solid.Whycheck</item>
<item name="actionModeBackground">@drawable/cab_background_top_whycheck</item>
<item name="actionModeSplitBackground">@drawable/cab_background_bottom_whycheck</item>
<!-- Light.DarkActionBar specific -->
<item name="actionBarWidgetTheme">@style/Theme.Whycheck.Widget</item>
</style>
<style name="ActionBar.Solid.Whycheck" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/ab_solid_whycheck</item>
<item name="backgroundStacked">@drawable/ab_stacked_solid_whycheck</item>
<item name="backgroundSplit">@drawable/ab_bottom_solid_whycheck</item>
</style>
<style name="ActionBar.Transparent.Whycheck" parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@drawable/ab_transparent_whycheck</item>
</style>
<!-- this style is only referenced in a Light.DarkActionBar based theme -->
<style name="Theme.Whycheck.Widget" parent="@style/Theme.AppCompat">
</style>
Run Code Online (Sandbox Code Playgroud)
提供我的风格.
有人知道改造如何支持 304 Not Modifield 吗?因为现在改造会抛出错误。我正在使用 etag 来检查 json 是否应该更新。
@GET("/imageslist.json") Response fetch(@Header("If-None-Match") String etag);
Run Code Online (Sandbox Code Playgroud)
这就是我现在的处理方式
ImageService service = restAdapter.create(ImageService.class);
Response response = null;
try {
response = service.fetch("\"vENxxg\"");
} catch (RetrofitError e) {
if (e.getResponse().getStatus() == HttpURLConnection.HTTP_NOT_MODIFIED) {
//Nothing to update
response = e.getResponse();
} else {
Log.e("Retrofit", e.getMessage(), e);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?对不起,我的英语不好。
嗨所有我在Android 4.3中有这个代码,我刚刚使用改造,但服务器抛出一个错误消息"输入不是一个有效的Base-64字符串,因为它包含一个非基本64字符,超过两个填充字符,或填充字符中的非法字符." 当我使用改造时
//Normal HttpClient
//Base64 String
photo = new String(b);
// Creating HTTP client
HttpClient httpClient = new DefaultHttpClient();
// Creating HTTP Post
HttpPut httpPut = new HttpPut("http://beta2.irealtor.api.iproperty.com.my.ipga.local/PhotoService/"
+ mPropertyId + "/testWatermark"
);
httpPut.setHeader("content-type", "application/x-www-form-urlencoded");
httpPut.setHeader("Authorization","WFdSeW8vTJ1Z3oQlBJMk53VGpaekZRY2pCd1pYSlVXU090");
httpPut.setHeader("Accept", "application/json");
httpPut.setEntity(new StringEntity(photo, "utf-8"));
HttpResponse response = httpClient.execute(httpPut);
//With retrofit
@Headers({
"content-type:application/x-www-form-urlencoded"
})
@PUT("/PhotoService/{PROPERTYID}/{WATERMARK}") String uploadPhoto(
@Body String photo,
@Path("PROPERTYID") String propertyId,
@Path("WATERMARK") String watermark);
Run Code Online (Sandbox Code Playgroud)