您好我有一个json请求,我必须在我的junit测试用例中传递但请求是删除,因为删除不支持setEntity方法。如何在我的测试用例中传递请求。 Json请求我必须传递
{
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:orientation="vertical">
<!-- this should fill the parent with black but its not filling -->
</RelativeLayout>
</LinearLayout>
</ScrollView>
}
mytest案例
"userId":"AJudd",
"siteId":"131",
"alternateSiteId":"186"
如何传递json值以便删除传递的值数据?
答案 0 :(得分:0)
好的,首先:发送带有DELETE的正文并不是互联网上常见的情况。然而,它并没有被禁止(Is an entity body allowed for an HTTP DELETE request?)。所以,有两个想法:
1)新课程
我假设您使用org.apache.http.client:只需扩展HttpEntityEnclosingRequestBase
:
public class HttpDeleteWithEntity extends HttpEntityEnclosingRequestBase {
public final static String METHOD_NAME = "DELETE";
public HttpDeleteWithEntity() {
super();
}
public HttpDeleteWithEntity(final URI uri) {
super();
setURI(uri);
}
public HttpDeleteWithEntity(final String uri) {
super();
setURI(URI.create(uri));
}
@Override
public String getMethod() {
return METHOD_NAME;
}
}
这基本上是来自HttpPost
类的c&amp; p。我没有测试过这个,等等。
然后使用您的HttpDeleteWithEntity
课程代替HttpDelete
。
2)使用自定义标题
如果您可以修改可能是一个不错的替代品的服务器代码。
delete.addHeader("testwith", jsonString);
或
delete.addHeader("userId","AJudd");
delete.addHeader("siteId","131");
delete.addHeader("alternateSiteId","186);
最后,如果您负责服务器实现,我建议您在没有任何正文的情况下实现DELETE请求(请参阅artemisian&#39;答案)。
答案 1 :(得分:0)
恕我直言,这是你的设计问题。
如果您的目的是删除备用站点并且其id是唯一的,那么将alternateSiteId作为URI的一部分传递就足够了:
Method: DELETE
URL: http://localhost:8080/adminrest1/alternatesite/{alternateSiteId}
如果alternateSiteId不是唯一的,那么您正在更新关系。在这种情况下,您应该使用PUT,它允许您在请求中包含正文。请注意,您应该将要更新的资源的ID作为URI的一部分传递,例如:
Method: PUT
URL: http://localhost:8080/adminrest1/alternatesite/{userId}
Body:{
"siteId":"131",
"alternateSiteId":"186"
}