Android WCF方法不允许

时间:2012-02-21 03:17:59

标签: android wcf

我有以下代码,应该通过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

这一切都很好。

干杯,

麦克

2 个答案:

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