HttpDeleteには、HttpPostやHttpPutなどのsetEntity()のようなメソッドが含まれていますか?HttpPostを使用すると、次のようになります。
httppost.setEntity(new UrlEncodedFormEntity(
getNameValuePairsForFriends(context, friendID)));
wtih deleteでこれを行うにはどうすればよいですか?
HTTPDELETEが入力を受け取るとは思いません-GETバリアントのように機能すると思います。
HTTPクライアントによって提供される実装は、この推測もサポートしているようです。
本文で削除を提供する場合は、本文を受け入れる場所へのPOSTの使用を検討する必要があります。
しかし、あなたの質問に答えて、いいえ、削除は本文を受け入れません。クエリパラメータは追加できますが、本文は追加できません。
class MyDelete extends HttpPost
{
public MyDelete(String url){
super(url);
}
@Override
public String getMethod() {
return "DELETE";
}
}
クラスにhttpdeleteクラスを拡張させ、クラスのオブジェクトをエンティティに送信すると、httpdeleteにデータを投稿できるようになります。
HttpResponse httpResponse;
String result = null;
HttpClient httpClient = new DefaultHttpClient();
HttpConnectionParams
.setConnectionTimeout(httpClient.getParams(), 10000);
MyDelete httpDelete = new MyDelete(urlUnfollowPatientBundle);
StringEntity entity = null;
try {
entity = new StringEntity(rawData);
httpDelete.setEntity(entity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
httpResponse = httpClient.execute(httpDelete);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity httpEntity = httpResponse.getEntity();
result = EntityUtils.toString(httpEntity);
status = true;
}
HTTPDeleteはペイロードを伝送しません。
HttpDeleteは、uri / urlを削除するだけで、上記のリソースにDELETEHTTPヘッダーを発行します。
これを試してください、単にHttpDeleteを拡張しました:
クラスHttpDeleteWithBodyはHttpDeleteを拡張します{
private HttpEntity entity;
public HttpDeleteWithBody(String url) {
super(url);
}
public HttpEntity getEntity() {
return this.entity;
}
public void setEntity(final HttpEntity entity) {
this.entity = entity;
}
}
Scalaでは、次のコードはHTTPDELETEを介して本文を送信するために機能します
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase
import java.net.URI
class HttpDeleteWithBody(uri: URI) extends HttpEntityEnclosingRequestBase {
val METHOD_NAME: String = "DELETE"
def getMethod: String = METHOD_NAME
super.setURI(uri)
setURI(uri)
}