我在將數據發佈到我的REST WCF服務時遇到了一些困難。我需要向它發送一個json對象/數組,但是我的POST方法正在期待一個Stream,然後將它分開以獲取JSON(不能更改此部分)。使用android/httpclient與流發佈json數據到REST服務
我已經在C#中使用此代碼來實現這一點:
public static string CallPostService(string url, string data)
{
url = Config.serviceAddress + url;
string json = data;
byte[] buffer = Encoding.UTF8.GetBytes(json);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
request.Credentials = new NetworkCredential("user", "pass");
request.ContentType = "application/x-www-form-urlencoded";
using (StreamWriter sw = new StreamWriter(request.GetRequestStream()))
{
sw.Write(json);
Console.WriteLine(json);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
string res = sr.ReadToEnd();
return res;
}
}
我需要一些相應的Java代碼,要做到這一點,最好是使用Apache的HttpClient。我是http庫的新手,所以我希望有一個方向。
EDITS:
這是從我的WCF服務的方法頭。請求主體需要是一個流,以便服務可以處理它。
[WebInvoke(Method = "POST", UriTemplate = "person/delete", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Person DeletePerson(Stream streamdata) { //bla }
有多遠,你用java到哪裏去了? – njzk2 2012-04-20 15:06:24
不知道你在問什麼,但我實際上已經能夠使用HttpClient執行GET,只需要POST開始工作。 – 2012-04-20 15:08:33
後的工作方式相同,只需要給它一個實體(可以是很多不同的東西) – njzk2 2012-04-20 15:09:24