我试图从我的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;
}
}
}
}
答案 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服务。