我有以下代码,应该通过WCF服务将两个字段插入数据库,但是当我在Eclipse中测试时,我得到了一个405 Method Not Allowed错误。
WCF可以从Fiddler和我的测试C#网络客户端工作,我只通过手机从Android获得错误,让我相信问题可能在这个代码中!
HttpPost request = new HttpPost("http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle");
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
Log.d("WebInvoke", "Saving : " + response.getStatusLine().getStatusCode());
任何人都能看到我错过的东西!
修改
我正在Fiddler做一个帖子,如果我发帖:
http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle
这一切都很好。
干杯,
麦克
答案 0 :(得分:1)
更新:按要求返回。下面的代码是我用来在Android上制作JSON POST的代码,它对我有用。
您正在Android代码中执行HTTP POST。你是在fiddler做POST还是在做GET?我问的原因是你没有发送你的帖子的主体,只设置查询字符串。我已经将我的Android代码包含在WCF服务中进行JSON POST。
希望这会有所帮助......
如果您发布更多信息,我将很乐意提供帮助并更新答案。
public JSONObject sendPOSTurl(String url, JSONObject data) throws JSONException
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response;
try
{
StringEntity se = new StringEntity(data.toString());
httppost.setEntity(se);
httppost.setHeader("Accept", "application/json");
httppost.setHeader("Content-type", "application/json");
response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null)
{
InputStream instream = entity.getContent();
String result = convertStreamToString(instream);
instream.close();
return new JSONObject(result);
}
}
catch(Exception e)
{
Log.e("REST", "Failed to POST data", e);
}
return null;
}
public static String convertStreamToString(InputStream is)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try
{
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
return sb.toString();
}
答案 1 :(得分:0)
http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle
网址看起来像是一个HttpGet
如果你想使用HttpPost,你应该把你的参数放在HttpEntity中,你的参数必须是相应的内容类型,如json