2013-07-25 44 views
-7

我需要从URL调用Web服务。我在文本框中输入了no,我应该输入文本框中输入的内容。请帮我修复错误。这里是我的java代码。如何在Android中调用Web服务

MainActivity.java

public class MainActivity extends Activity { 

    Button b; 
    TextView tv; 
    EditText et; 

    String editText; 
    String displayText; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     et = (EditText) findViewById(R.id.editText1); 

     tv = (TextView) findViewById(R.id.tv_result); 

     b = (Button) findViewById(R.id.button1); 



     b.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 

       if (et.getText().length() != 0 && et.getText().toString() != "") { 

        editText = et.getText().toString(); 

        AsyncCallWS task = new AsyncCallWS(); 

        task.execute(); 

       } else { 
        tv.setText("Please enter number"); 
       } 
      } 
     }); 
    } 

    private class AsyncCallWS extends AsyncTask<String, Void, Void> { 
    @Override 
     protected Void doInBackground(String... params) { 
      displayText = ser.invokeiop(editText,"hello"); 
      return null; 

     } 

    } 
} 

ser.java

public class ser { 

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

    private static String URL = "http://my url"; 

    private static String SOAP_ACTION = "srvice"; 

    public static String invokeiop(String name, String webMethName) { 
     String resTxt = null; 

     SoapObject request = new SoapObject(NAMESPACE, webMethName); 

     PropertyInfo iop = new PropertyInfo(); 

     iop.setName("name"); 

     iop.setValue(name); 

     //iop.setType(String.class); 

     request.addProperty(iop); 

     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 

     envelope.setOutputSoapObject(request); 
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

     try { 

      androidHttpTransport.call(SOAP_ACTION+webMethName, envelope); 

      SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 

      resTxt = response.toString(); 



     } catch (Exception e) { 

      e.printStackTrace(); 


      resTxt = "Error occured"; 
     } 
+1

你想说什么?你需要在Web服务中传递价值,并想要获取或其他? –

+0

是的..请帮助。我是Android新手。 dnt knw怎么办 – user2603611

+0

必须在web服务中传递值,我应该从中取值 – user2603611

回答

0

这可以帮助你!

public class MainActivity extends Activity { 

Button b; 
EditText et; 

String editText; 
String displayText; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    et = (EditText) findViewById(R.id.editText1); 

    b = (Button) findViewById(R.id.button1); 

    b.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 

      if (et.getText().length() != 0 && et.getText().toString() != "") { 

       editText = et.getText().toString(); 

       AsyncCallWS(); 

      } else { 
       // declare a toast 
      } 
     } 
    }); 
} 


public void AsyncCallWS(final String q) 
{ 
class HttpGetAsyncTask extends AsyncTask<String, Void, String> 
{ 

@Override 
protected String doInBackground(String... params) 
{ 
    String txtSearch = params[0]; 
    HttpClient httpClient = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet("URL"+editText); 
    try 
    { 

    HttpResponse httpResponse = httpClient.execute(httpGet); 

    inputStream = httpResponse.getEntity().getContent(); 

      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 

      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

      StringBuilder strB = new StringBuilder(); 

    String bufferedStrChunk = null; 

    while((bufferedStrChunk = bufferedReader.readLine()) != null) 
    { 
     strB.append(bufferedStrChunk); 
    } 

    return strB.toString(); 

    } 
    catch (ClientProtocolException cpe) 
    { 
    cpe.printStackTrace(); 
    } 
    catch (IOException ioe) 
    { 
     ioe.printStackTrace(); 
    } 
    return null; 
    } 

      @Override 
    protected void onPostExecute(String result)  
    { 
     super.onPostExecute(result); 
      try { 

      // Parse your data here    
      } 
        catch (JSONException e) { 
       Log.e("JSON Parser", "Error parsing data " + e.toString()); 
      } 
    } 

    } 
    HttpGetAsyncTask httpGetAsyncTask = new HttpGetAsyncTask(); 

    httpGetAsyncTask.execute(editText);   
} 
+0

感谢您的回复。 :) – user2603611

+0

但是当我试着这个代码它的力量在模拟器中关闭。 – user2603611