HTTP 500 内部服务器错误,在 android 发布版本中



我对我的服务器进行了改造调用,该调用返回了JSON数据。从第一天开始,我一直在进行调试版本,一切看起来都很好。就在昨天,我生成了一个发布版本(android(,发现调用失败,异常为"HTTP 500,内部服务器错误"。

我无法理解我陷入这种状态的两者之间有什么区别。 进行改造的代码如下,

public void populateFeeds(final String market, final String category, final String msaToken, final String language, final List<CategorizedFeeds> categorizedFeedsList){
VmFeedsHub.this.feedClusterDataSetUpdate.set(false);
VmFeedsHub.this.feedCategoryDataSetUpdate.set(false);
BackendFactory.getFeedsServiceBackend().getFeedsMetadata(market, category, null, null)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Feeds>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
ALog.i(TAG, LOG_PREFIX + " Feeds data retrieved empty/null for market: " + market + " with exception: " + e.getMessage());
}
@Override
public void onNext(Feeds feeds) {
ALog.i(TAG, LOG_PREFIX + " Feeds data retrieved successfully with feed count: " + feeds.getFeedsMetaDataArrayList().size() + " for market: " + market);
for (CategorizedFeeds categorizedFeeds : feeds.getFeedsMetaDataArrayList()) {
List<FeedMetadata> feedMetadataList = new ArrayList<>();
for(FeedsMetadata feedsMetadata : categorizedFeeds.getFeedsMetadataArrayList()){
FeedMetadata feedMetadata = new FeedMetadata(feedsMetadata.getHeadlineText(), feedsMetadata.getHeadlineImageURL(), feedsMetadata.getProviderName(), feedsMetadata.getProviderImageURL(), feedsMetadata.getPublishedDateTime(), feedsMetadata.getFeedURL(), feedsMetadata.getCmsId());
feedMetadataList.add(feedMetadata);
}
CategorizedFeeds categorizedFeed = new CategorizedFeeds(categorizedFeeds.getCategory(), feedMetadataList);
categorizedFeedsList.add(categorizedFeed);
}
if(category.equals(CATEGORY_CLUSTER))
VmFeedsHub.this.feedClusterDataSetUpdate.set(true);
else
VmFeedsHub.this.feedCategoryDataSetUpdate.set(true);
}
});
}

我对此问题的解决方案是保留模型类以进行改造。

将此代码添加到proguard-rules.pro文件中

# keep model classes for retrofit
# packagename.directory.** { *; } 
-keep class com.packagename.mac.model.** { *; }
-keep class com.packagename.mac.data.response.** { *; }

我发现这里的问题出在我发送的 POST 正文上。在自定义对象中,proguard 正在重命名变量,因此服务器无法拦截它们。添加@SerializedName注释修复了此问题。

-keep class com.packagename.path_name_to_models

给出您正在使用的模型类的路径,问题将得到解决

最新更新