发布请求没有将参数android传递给IIS服务器中的asp.net

时间:2013-09-09 16:50:29

标签: c# android asp.net iis

我试图从我的ASP.NET Web应用程序中触发一个创建操作。

代码似乎工作正常,没有错误。我在Windows 7中使用IIS 6.我怀疑IIS中的配置丢失了吗?

我没有在网络应用中获得价值。

Android代码:

List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("supplier_name", 
                                          "Thein Htike Aung"));

HttpClient client1 = new DefaultHttpClient();
HttpPost request = 
    new HttpPost("http://192.168.1.104/LogicUniversity/SupplierHandler.ashx");

try {
    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
    request.setEntity(formEntity);

    request.addHeader("Content-type", "application/x-www-form-urlencoded");
    HttpResponse response = client1.execute(request);

    BufferedReader in = new BufferedReader(
                          new InputStreamReader(
                                response.getEntity().getContent()));

    String line;
    String page="";
    line = in.readLine();

    while(line!=null)
    {
      page=page+line;
      line=in.readLine();
    }

    Log.i("Page",page);
    in.close();
} catch (ClientProtocolException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}             

在Web处理程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using ApplicationLayer.Controllers;
using ApplicationLayer;

namespace PresentationLayer
{
    /// <summary>
    /// Summary description for SupplierHandler
    /// </summary>
    public class SupplierHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            string name = context.Request.QueryString["supplier_name"];

            if (name != null)
            {
                Supplier s = new Supplier();
                s.supplier_name = name;
                s.code = "TEST";
                new SupplierController().actionCreateSupplier(s);
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您说您正在使用HTTP POST将您的值推送到您正在从查询字符串中读取的HTTP处理程序中的服务器:

string name = context.Request.QueryString["supplier_name"];

这应该是:

string name = context.Request.Form["supplier_name"];

答案 1 :(得分:0)

192.168.1.104特定于您的本地网络。来自Andriod代码的HTTPPost请求假定Andriod设备位于同一本地网络上,这是您的意图吗?这可能是导致代码在开发中工作的原因之一,而不是生产环境。您需要在Web服务器上配置静态IP才能访问本地网络外部的Web服务。