Java { methodPost.releaseConnection(); 如果(br!=null),请尝试{ br.close(); }捕获(例外fe){ fe.printStackTrace(); } } } } 我应该如何处理“//这是一个示例数据..您已经

Java { methodPost.releaseConnection(); 如果(br!=null),请尝试{ br.close(); }捕获(例外fe){ fe.printStackTrace(); } } } } 我应该如何处理“//这是一个示例数据..您已经,java,android,web-services,soap,httpclient,Java,Android,Web Services,Soap,Httpclient,{ methodPost.releaseConnection(); 如果(br!=null),请尝试{ br.close(); }捕获(例外fe){ fe.printStackTrace(); } } } } 我应该如何处理“//这是一个示例数据..您已经创建了自己所需的数据开始”,而且,我需要在soap字符串上保留所有这些/n附件?。我收到错误代码500,内部服务器错误我使用你的解决方案用我当前的代码编辑了我的问题,请检查一下,有些地方不正确working@Shyam,我正在使用你的代码,但是

{ methodPost.releaseConnection(); 如果(br!=null),请尝试{ br.close(); }捕获(例外fe){ fe.printStackTrace(); } } } }
我应该如何处理“//这是一个示例数据..您已经创建了自己所需的数据开始”,而且,我需要在soap字符串上保留所有这些/n附件?。我收到错误代码500,内部服务器错误我使用你的解决方案用我当前的代码编辑了我的问题,请检查一下,有些地方不正确working@Shyam,我正在使用你的代码,但是得到了上面的响应,我无法发布所有的响应字符串,因为这里有字符limi,对不起。你能告诉我为什么会这样吗?@sachin10请看我的问题,你能告诉我这种解决方案吗?您知道如何解析此呼叫的响应吗?
String soapCall="<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:addDownloadParams> <m:idApp>";
soapCall+=idApp;
soapCall+="<m:versionApp>";
soapCall+=versonApp;
soapCall+="</m:versionApp> <m:os>Android</m:os> </m:addDownloadParams> </soap:Body> </soap:Envelope>";
http://stats.mywebsite.com/ws/adddownload
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
    public static byte[] addDownloadIntoServer(){
        byte[] result = null;

        String SERVER_URL="http://stats.mywebsite.com/ws/server.php";
        String SOAP_ACTION="addDownload";
        String body="<?xml version=\"1.0\" encoding=\"UTF-8\"?><SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"http://stats.mobincube.com/\"><SOAP-ENV:Body><ns1:addDownloadParams>";
    body+="<idApp>" +SectionManager.instance.app_id+"</idApp>";
    body+="<versionApp>"+SectionManager.instance.app_version+"</versionApp>";
    body+="<source>android</source> <os>Android</os> </ns1:addDownloadParams></SOAP-ENV:Body></SOAP-ENV:Envelope>";

        HttpParams httpParameters = new BasicHttpParams();
        // Set the timeout in milliseconds until a connection is established.
        int timeoutConnection = 15000;
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
        // Set the default socket timeout (SO_TIMEOUT)
        // in milliseconds which is the timeout for waiting for data.
        int timeoutSocket = 35000;
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

        DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);

        /*
        * httpclient.getCredentialsProvider().setCredentials( new
        * AuthScope("os.icloud.com", 80, null, "Digest"), new
        * UsernamePasswordCredentials(username, password));
        */
        HttpPost httppost = new HttpPost(SERVER_URL );
        httppost.setHeader("soapaction", SOAP_ACTION);
        httppost.setHeader("Content-Type", "text/xml; charset=utf-8");

        System.out.println("executing request" + httppost.getRequestLine());
        //now create a soap request message as follows:
        final StringBuffer soap = new StringBuffer();
        soap.append("\n");
        soap.append("");
        // this is a sample data..you have create your own required data  BEGIN
        soap.append(" \n");
        soap.append(" \n");
        soap.append("" + body);
        soap.append(" \n");
        soap.append(" \n");

        /* soap.append(body); */
        // END of MEssage Body
        soap.append("");
        Log.i("SOAP Request", ""+soap.toString());
        // END of full SOAP request  message
        try {
            HttpEntity entity = new StringEntity(soap.toString(),HTTP.UTF_8);
            httppost.setEntity(entity); 
            HttpResponse response = httpclient.execute(httppost);// calling server
            HttpEntity r_entity = response.getEntity();  //get response
            Log.i("Reponse Header", "Begin...");          // response headers
            Log.i("Reponse Header", "StatusLine:"+response.getStatusLine());
            Header[] headers = response.getAllHeaders();
            for(Header h:headers)
                Log.i("Reponse Header",h.getName() + ": " + h.getValue());

            Log.i("Reponse Header", "END...");
            if (r_entity != null) {       
                result = new byte[(int) r_entity.getContentLength()];  
                if (r_entity.isStreaming()) {
                    DataInputStream is = new DataInputStream(
                    r_entity.getContent());
                    is.readFully(result);
                }
            }
        }catch (Exception E) {
            Log.i("Exception While Connecting", ""+E.getMessage());
            E.printStackTrace();
        }

        httpclient.getConnectionManager().shutdown(); //shut down the connection
        return result;
    }
package ProductVerificationCard.in;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.app.Activity;
import android.content.Intent;``
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class AdminLogin extends Activity {
 /** Called when the activity is first created. */
Button btn_ok;
TextView textView;
private static final String SOAP_ACTION = "http://tempuri.org/Login";

private static final String OPERATION_NAME = "Login";

private static final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";

private static final String SOAP_ADDRESS = "http://10.0.2.2/new/WebService.asmx";
String s;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btn_ok=(Button) findViewById(R.id.btn_login);
    textView=(TextView) findViewById(R.id.tv_error);

    btn_ok.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                    OPERATION_NAME);

                    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
                    envelope.dotNet = true;

                    envelope.setOutputSoapObject(request);

                    HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);

                    try

                    {

                    httpTransport.call(SOAP_ACTION, envelope);

                    Object response = envelope.getResponse();

                    //textView.setText(response.toString());
                     s=response.toString();
                     if(s=="true")
                     {
                         Intent intent=new Intent(AdminLogin.this,MenuForm.class);
                            startActivity(intent);

                     }

                     else
                     {
                         textView.setText("Enter Valid Username or Password");
                     }
                    }

                    catch (Exception exception)

                    {

                    textView.setText(exception.toString());

                    }
            // TODO Auto-generated method stub
            }
       });

    }
  }
private byte[] callSOAPServer() {

    byte[] result = null;

    HttpParams httpParameters = new BasicHttpParams();
    // Set the timeout in milliseconds until a connection is established.
    int timeoutConnection = 15000;
    HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
    // Set the default socket timeout (SO_TIMEOUT)
    // in milliseconds which is the timeout for waiting for data.
    int timeoutSocket = 35000;
    HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

    DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);

    /*
     * httpclient.getCredentialsProvider().setCredentials( new
     * AuthScope("os.icloud.com", 80, null, "Digest"), new
     * UsernamePasswordCredentials(username, password));
     */
    HttpPost httppost = new HttpPost(SERVER_URL );
    httppost.setHeader("soapaction", SOAP_ACTION);
    httppost.setHeader("Content-Type", "text/xml; charset=utf-8");

    System.out.println("executing request" + httppost.getRequestLine());
   //now create a soap request message as follows:
    final StringBuffer soap = new StringBuffer();
    soap.append("\n");
    soap.append("");
   // this is a sample data..you have create your own required data  BEGIN
    soap.append(" \n");
    soap.append(" \n");
    soap.append("" + body);
    soap.append(" \n");
    soap.append(" \n");

    /* soap.append(body); */
     // END of MEssage Body
    soap.append("");
    Log.i("SOAP Request", ""+soap.toString());
   // END of full SOAP request  message
    try {
        HttpEntity entity = new StringEntity(soap.toString(),HTTP.UTF_8);
        httppost.setEntity(entity); 
        HttpResponse response = httpclient.execute(httppost);// calling server
        HttpEntity r_entity = response.getEntity();  //get response
        Log.i("Reponse Header", "Begin...");          // response headers
        Log.i("Reponse Header", "StatusLine:"+response.getStatusLine());
        Header[] headers = response.getAllHeaders();
        for(Header h:headers){
            Log.i("Reponse Header",h.getName() + ": " + h.getValue());
        }
        Log.i("Reponse Header", "END...");
        if (r_entity != null) {       
            result = new byte[(int) r_entity.getContentLength()];  
            if (r_entity.isStreaming()) {
                DataInputStream is = new DataInputStream(
                        r_entity.getContent());
                is.readFully(result);
            }
        }
    } catch (Exception E) {
        Log.i("Exception While Connecting", ""+E.getMessage());
        E.printStackTrace();
    }

    httpclient.getConnectionManager().shutdown(); //shut down the connection
    return result;
   }
byte[] initReqrepsonse = callSOAPServer(soapBodymessage );
ByteArrayInputStream bais=new ByteArrayInputStream(initReqrepsonse);
// now parse the xml as
/** Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

/** Create handler to handle XML Tags ( extends DefaultHandler ) */
// ResponseParser  is XML parser class which will parse the XML output.
ResponseParser myXMLHandler = new ResponseParser();
xr.setContentHandler(myXMLHandler);
Log.i("XML data", bais.toString());
xr.parse(new InputSource(bais));
Formatted answer :


import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;

/**
 * * This program demonstrates consuming web service using Apache HTTPClient and
 * SOAP message. * Reference:
 * http://www.webservicex.net/stockquote.asmx?op=GetQuote * ClassPath: Keep these
 * two files in class path: commons-httpclient-3.0.1.jar, commons-codec-1.4.jar * @author
 * Bhavani P Polimetla * @since April-27-2011
 */
public class WSClient {
    public static void main(String args[]) {
        HttpClient httpClient = new HttpClient();
        httpClient.getParams().setParameter("http.useragent",
                "Web Service Test Client");
        BufferedReader br = null;
        String data = "<?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/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">   "
                + "<soap12:Body>     "
                + "<GetQuote xmlns=\"http://www.webserviceX.NET/\">       "
                + "<symbol>INFY</symbol>     " + "</GetQuote>   "
                + "</soap12:Body> </soap12:Envelope>";
        PostMethod methodPost = new PostMethod(
                "http://www.webservicex.net/stockquote.asmx?op=GetQuote");
        methodPost.setRequestBody(data);
        methodPost.setRequestHeader("Content-Type", "text/xml");
        try {
            int returnCode = httpClient.executeMethod(methodPost);
            if (returnCode == HttpStatus.SC_NOT_IMPLEMENTED) {
                System.out
                        .println("The Post method is not implemented by this URI");
                methodPost.getResponseBodyAsString();
            } else {
                br = new BufferedReader(new InputStreamReader(
                        methodPost.getResponseBodyAsStream()));
                String readLine;
                while (((readLine = br.readLine()) != null)) {
                    System.out.println(readLine);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            methodPost.releaseConnection();
            if (br != null)             try {
                    br.close();
                } catch (Exception fe) {
                    fe.printStackTrace();
                }
        }
    }
}