我有一个特殊要求,我想将HttpResponse(来自Apache CORE API)对象作为额外的Intent传递给另一个Intent。
问题: 我有我的HTTP服务器(Apache CORE)运行服务S.当我收到POST请求时,响应应该在执行意图A后发送,意图A将广播发送到已经运行的服务S(这是基于我设计的)需求)。所以我需要在广播接收器中处理HTTP POST响应。这可能吗?所以,我需要在handle()方法中的HttpResponse在Broadcast接收器中发送并从那里发送响应。如果您需要更多详细信息,请与我们联系。
我找到了传递原始类型的链接,如String,整数类型等。任何帮助都表示赞赏。
答案 0 :(得分:2)
您可以使用Serializable
界面,如下所示:
// pass:
intent.putExtra("MotherClass", obj);
// receive:
getIntent().getSerializableExtra("MotherClass");
甚至更好,请使用Parcelable
,如下所示(来自@BomberMan's answer和this blog):
public class CustomObject1 implements Parcelable {
// parcelable code CustomObject1
}
public class CustomObject2 implements Parcelable {
private CustomObject1 obj1;
// add CustomObject1 here with getter setter
// parcelable code for CustomObject2
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(obj1, flags);
}
private void readFromParcel(Parcel in) {
obj1 = in.readParcelable(CustomObject1.class.getClassLoader());
}
............
}
答案 1 :(得分:1)
为了传递对象作为额外的。您可能需要实现Parclable或Serializable。但是HttpResponse的默认实现并没有实现这两者。所以你需要的是扩展BasicHttpResponse并实现其中一个。
答案 2 :(得分:0)
我用过
HashMap<Object,Object> requestValue.put(response,"httpResponse"),
,其中 response是HttpResponse对象,httpResponse是用作此请求的ID的字符串。我在Activity和服务之间传递了String。稍后,使用其值(String值)检索对象(键)的值。 HttpResponse没有实现Serializable,因此这工作:)谢谢大家的回复。