【发布时间】:2015-09-28 10:52:18
【问题描述】:
我知道这应该很容易在网上找到,但没有一篇文章解决了我的问题,所以我来寻求帮助。我正在尝试在 android 中向 wcf restful web 服务发出 httppost 请求。我想创建一个 xml,然后我想将它发布到服务并获得服务的响应。
我创建了一个 WCF Rest 服务,它有一个接受 xml 并做出响应的方法。这是该方法的代码:
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "DoWork1/{xml}",
BodyStyle = WebMessageBodyStyle.Wrapped)]
XElement DoWork1(string xml);
public XElement DoWork1(string xml)
{
StreamReader reader = null;
XDocument xDocRequest = null;
string strXmlRequest = string.Empty;
reader = new StreamReader(xml);
strXmlRequest = reader.ReadToEnd();
xDocRequest = XDocument.Parse(strXmlRequest);
string response = "<Result>OK</Result>";
return XElement.Parse(response);
}
这是发布 xml 的 android 代码:
String myXML = "<? xml version=1.0> <Request> <Elemtnt> <data id=\"1\">E1203</data> <data id=\"2\">E1204</data> </Element> </Request>";
HttpClient httpClient = new DefaultHttpClient();
// replace with your url
HttpPost httpPost = new HttpPost("http://192.168.0.15/Httppost/Service1.svc/DoWork1/"+myXML);
此代码在路径异常中抛出非法字符。
如何将 xml 文件从 android 发布到此服务。任何建议将不胜感激。
【问题讨论】:
-
我想知道投反对票的原因??
-
为什么要在 myXML 后面加上 url,你应该将 xml 设置为 post request body
-
因为当我尝试通过 httppost.setentity 方法等其他方式传递它时,它一直告诉我找不到 404 错误服务
-
这是你的服务器端的问题,而不是客户端的问题......但是你不应该在 url 中发送 xml,如果你必须在 url 中向服务器发送一些东西,那么它应该是 URLEncoded
-
将 xml 转换为字符串并使用 encoding-stackoverflow.com/questions/32591295/… 像这样发送(对于不安全的服务器,将 https 替换为 http。