代码之家  ›  专栏  ›  技术社区  ›  Taimoor Ali

60000ms后,Ksoap2客户端返回连接到/192.168.15.56(端口1122)失败

  •  -1
  • Taimoor Ali  · 技术社区  · 7 年前

    我在中编写了一个webservice。网我在IIS中发布服务并启动它。我还编辑了它的绑定以连接到1122。在防火墙中,我添加了入站和出站规则来访问我的端口1122。此时,我可以在android手机浏览器中打开webservice页面。我在android代码中使用ksoap2库来访问。net服务。我首先在emulator上测试了该服务,结果很好。当我尝试在手机上测试相同的代码时,它会引发异常 60000ms后无法连接到/192.168.15.56(端口1122)。 这是我的代码中控制ip并调用asynctask的部分

       String inputId=editText1.getText().toString();
       //String params[]=new String[]{"10.0.2.2:1122",inputId};
       String params[]=new String[]{"192.169.15.56:1122",inputId};
        new MyAsyncTask().execute(params);
    

    我要处理ksoap2的类如下所示:

    class MyAsyncTask extends AsyncTask<String, Void, String>
        {
            public String SOAP_ACTION= "http://threepin.org/findUserNameById";
            public String OPERATION_NAME="findUserNameById";
            public String WSDL_TARGET_NAMESPACE="http://threepin.org/";
            public String SOAP_ADDRESS;
            private SoapObject request;
            private HttpTransportSE httpTransport;
            private SoapSerializationEnvelope envelope;
            Object response=null;
    
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                progressBar.setVisibility(View.VISIBLE);
    
            }
    
            @Override
            protected String doInBackground(String... params) {
                SOAP_ADDRESS="http://"+params[0]+"/myWebService.asmx";
                request=new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);
                PropertyInfo pi=new PropertyInfo();
                pi.setName("Id");
                pi.setValue(Integer.parseInt(params[1]));
                pi.setType(Integer.class);
                request.addProperty(pi);
                pi=new PropertyInfo();
                envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.dotNet=true;
                envelope.setOutputSoapObject(request);
                httpTransport=new HttpTransportSE(SOAP_ADDRESS,60000);
                try
                {
                    httpTransport.call(SOAP_ACTION,envelope);
                    response=envelope.getResponse();
                }
                catch (Exception e)
                {
                    response=e.getMessage();
                }
    
                return response.toString();
            }
            @Override
            protected void onPostExecute(final String result) {
                super.onPostExecute(result);
                mhandler.post(new Runnable() {
                    @Override
                    public void run() {
                        textView1.setText(result);
                        progressBar.setVisibility(View.GONE);
                    }
                });
            }
    

    是的,我的电脑ip是192.168.15.56,我仔细检查了一下。这是我的ip cmd ipconfig my ip
    端口为1122。我可以在我的手机浏览器中打开它看起来像这样 The page in my phones browser

    但是没有显示localhost 192.168.15.56,而是显示了任何帮助!我可以得到。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Taimoor Ali    7 年前

    我把它解决了,我把它添加到了我的网站上。默认情况下,这些配置是关闭的,因此在执行此操作之前,我可以在移动浏览器中看到本地主机和我的服务方法,但无法测试它们。此外,在连接此指令时,SOAP\u ADDRESS=SOAP\u ADDRESS=“http://”+params[0]+“/myWebService.asmx”;虽然路径是相同的,但还是搞砸了。我无法打开它,而不是这个“http://“+params[0]+”/myWebService.asmx”我对路径进行了硬内核处理,代码很好