Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
在Android中使用截击进行自动诱导_Android_Android Volley_Ksoap2 - Fatal编程技术网

在Android中使用截击进行自动诱导

在Android中使用截击进行自动诱导,android,android-volley,ksoap2,Android,Android Volley,Ksoap2,我使用KSOAP2KSOAP2工作,但我希望使用sgnVolley,并且我无法使用身份验证连接web服务。 我已经尝试覆盖getHeader方法,但是日志中显示了以下内容 E/Volley: [593] BasicNetwork.performRequest: Unexpected response code 500 for http://myservice/register.asmx 这是我的代码: public void peticion() { final RequestQ

我使用KSOAP2KSOAP2工作,但我希望使用sgnVolley,并且我无法使用身份验证连接web服务。 我已经尝试覆盖getHeader方法,但是日志中显示了以下内容

E/Volley: [593] BasicNetwork.performRequest: Unexpected response code 500 for http://myservice/register.asmx
这是我的代码:

   public void peticion() {
    final RequestQueue queue = Volley.newRequestQueue(this);

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

                Log.e("response", response);

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("VolleyError", error.getMessage());

        }
    }) {

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> headers = new HashMap<String, String>();
            headers.put("UsuarioName", "user123");
            headers.put("UsuarioPass", "123456789");
            return headers;
        }
    };

    queue.add(stringRequest);

}
public void peticion(){
final RequestQueue=Volley.newRequestQueue(this);
StringRequest StringRequest=new StringRequest(Request.Method.POST,URL,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
Log.e(“响应”,响应);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(“截击错误”,error.getMessage());
}
}) {
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map headers=newhashmap();
headers.put(“UsuarioName”、“user123”);
页眉.put(“UsuarioPass”、“123456789”);
返回标题;
}
};
添加(stringRequest);
}
编辑 将我的Web服务片段化

<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/MLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">  <soap12:Header>    <Autenticacion xmlns="http://tempuri.org/">      <suarioPass>string</UsuarioPass>      <UsuarioName>string</UsuarioName>    </Autenticacion>  </soap12:Header>
字符串

有ksoap的工作,但有凌空抽射没有

-数据是正确的

-服务工作

我不明白为什么不抽射


感谢您的帮助

我认为您可以参考以下代码(我已使用ASP.Net Web API进行了测试),然后将其逻辑用于您的应用程序:

        StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i(LOG_TAG, response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(LOG_TAG, error.toString());
            }
        }) {
            @Override
            public byte[] getBody() throws AuthFailureError {
                String paramsEncoding = "UTF-8";
                Map<String, String> params = new HashMap<>();
                params.put("grant_type", "password");
                params.put("username", "user");
                params.put("password", "pass");
                StringBuilder encodedParams = new StringBuilder();
                try {
                    for (Map.Entry<String, String> entry : params.entrySet()) {
                        encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding));
                        encodedParams.append('=');
                        encodedParams.append(URLEncoder.encode(entry.getValue(), paramsEncoding));
                        encodedParams.append('&');
                    }
                    return encodedParams.toString().getBytes(paramsEncoding);
                } catch (UnsupportedEncodingException uee) {
                    throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee);
                }
            }

            @Override
            protected VolleyError parseNetworkError(VolleyError volleyError) {
                String json;
                if (volleyError.networkResponse != null && volleyError.networkResponse.data != null) {
                    try {
                        json = new String(volleyError.networkResponse.data,
                                HttpHeaderParser.parseCharset(volleyError.networkResponse.headers));
                    } catch (UnsupportedEncodingException e) {
                        return new VolleyError(e.getMessage());
                    }
                    return new VolleyError(json);
                }
                return volleyError;
            }
        };

        queue.add(stringRequest);
StringRequest-StringRequest=new-StringRequest(Request.Method.POST,url,new-Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
Log.i(日志标签、响应);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(Log_标记,error.toString());
}
}) {
@凌驾
公共字节[]getBody()抛出AuthFailureError{
字符串paramsEncoding=“UTF-8”;
Map params=新的HashMap();
参数put(“授权类型”、“密码”);
参数put(“用户名”、“用户”);
参数put(“密码”、“通行证”);
StringBuilder encodedParams=新的StringBuilder();
试一试{
对于(Map.Entry:params.entrySet()){
encodedParams.append(URLEncoder.encode(entry.getKey(),paramsEncoding));
encodedParams.append('=');
encodedParams.append(URLEncoder.encode(entry.getValue(),paramsEncoding));
encodedParams.append('&');
}
返回encodedParams.toString().getBytes(paramsEncoding);
}捕获(不支持的编码异常uee){
抛出新的RuntimeException(“不支持编码:“+ParamSenCodeding,uee”);
}
}
@凌驾
受保护的截击错误解析NetworkError(截击错误截击错误){
字符串json;
if(volleyError.networkResponse!=null&&volleyError.networkResponse.data!=null){
试一试{
json=新字符串(volleyError.networkResponse.data,
HttpHeaderParser.parseCharset(volleyError.networkResponse.headers));
}捕获(不支持的编码异常e){
返回新的截击错误(如getMessage());
}
返回新的截击错误(json);
}
回击失误;
}
};
添加(stringRequest);

Volley不支持协议SOAP

尝试使用
getBody
而不是
getHeaders
@BNK例如:?发布服务器的规范/要求,或使用Postman/HttpRequester进行测试的屏幕截图。500是内部服务器错误,调试服务器应用程序。