Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android到ASP.NET处理请求时出错_C#_Android_Asp.net - Fatal编程技术网

C# Android到ASP.NET处理请求时出错

C# Android到ASP.NET处理请求时出错,c#,android,asp.net,C#,Android,Asp.net,当我从Android向ASP.NET方法发送请求时,出现错误: W/董事﹕ 身份验证错误:无法响应以下任何挑战:{} W/主要活动﹕ URL错误401 I/jsonResultStr:﹕ {“Message”:“处理请求时出错。”,“StackTrace”:“ExceptionType”:“} 这是ASP.NET方法原型: public string GetBuildingData(string roadId) 这是Android sendToAsp方法: public void sendTo

当我从Android向ASP.NET方法发送请求时,出现错误:

W/董事﹕ 身份验证错误:无法响应以下任何挑战:{}
W/主要活动﹕ URL错误401

I/jsonResultStr:﹕ {“Message”:“处理请求时出错。”,“StackTrace”:“ExceptionType”:“}

这是ASP.NET方法原型:

public string GetBuildingData(string roadId)
这是Android sendToAsp方法:

public void sendToAsp() {
    HttpPost httpPost = new HttpPost("http://madenati.alameentech.com:8082/Coding/Services/BuildingsServices.asmx/GetBuildingData");
    httpPost.setHeader("content-type", "application/json");
    HttpClient httpClient = new DefaultHttpClient(getHttpParameterObj(4000,4000));
    JSONObject data = new JSONObject();
    try {
        data.put("roadId", "1");

        StringEntity entity = new StringEntity(data.toString(), HTTP.UTF_8);
        httpPost.setEntity(entity);
        HttpResponse response = httpClient.execute(httpPost);
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        String jsonResultStr = reader.readLine();
        data = new JSONObject(jsonResultStr);
        final int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode != HttpStatus.SC_OK) {
            Log.w(getClass().getSimpleName(), "Error " + statusCode + " for URL " );
        }
        Log.i("jsonResultStr : ",jsonResultStr);
    } catch(Exception e) {
        Log.v("Exception","Exception sendToAsp");

    }
}
这是getHttpParameterObj方法:

private HttpParams getHttpParameterObj(int timeOutConnection,int timeOutSocket)
{
    HttpParams httpParameters = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParameters, timeOutConnection);
    HttpConnectionParams.setSoTimeout(httpParameters, timeOutSocket);
    return httpParameters;
}
和Manifest.xml中的

<uses-permission android:name="android.permission.INTERNET" />


可能是什么问题?

使用此类执行请求:

package com.alameen.mat;
import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

public class WebService extends AsyncTask<String, String, String>
{

public String NameSpace = "";
public String MethodName = "";
SoapObject request;
SoapSerializationEnvelope envelope;
HttpTransportSE androidHttpTransport;
String URL="";
Activity context;
public WebService(Activity c, String nameSpace, String method, String url)
{
    context=c;
    NameSpace=nameSpace;
    MethodName=method;
    request = new SoapObject(NameSpace, MethodName);
    envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
    envelope.setOutputSoapObject(request);
    envelope.dotNet = true;
    URL=url;
    androidHttpTransport = new HttpTransportSE(URL,30000);
}

public void addProperty(String name,String val)
{
    request.addProperty(name,val);
}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    //Log.i("jsonArray from ASP.NET: ",result);
}
@Override
protected void onPreExecute() {
    super.onPreExecute();


}
@Override
protected String doInBackground(String... params) {
    try
    {
        androidHttpTransport.call(params[0], envelope);
        SoapObject  result = (SoapObject)envelope.bodyIn;
        String res = result.getProperty(0).toString();
        //Log.d("result", res);
        return  res;
    }
    catch(Exception e)
    {
        SoapFault fault = (SoapFault)envelope.bodyIn;
        Log.d("error", fault.getMessage()+"/"+fault.getCause());
        e.printStackTrace();
    }
    return null;
}
void log(String l)
{
    Log.d("status", l);
    }
}
并将此库导入到项目中:


这可能是服务器端的错误,或者重新检查访问请求时需要传递的输入参数。
public static String URL="http://... .asmx?WSDL";
WebService ws = new WebService(This, "http://tempuri.org/", "methodName", URL);