如何在junit中传递删除方法的请求

时间:2017-02-23 15:35:24

标签: junit http-delete

您好我有一个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值以便删除传递的值数据?

2 个答案:

答案 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"
}