nasıl

2012-05-25 13 views
6

ben çıkış dizesinde sonucunu görüntülemek istediğiniz Android'den sabun web hizmetleri tüketen am nasıl Sting o Girdi Akışı dönüştürebilirsiniz Android SABUN WebServisleri'dir içinde String inputStream verilerini dönüştürebilir?nasıl

package com.venkattt.pack; 

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.SocketException; 

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapPrimitive; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.AndroidHttpTransport; 
import org.ksoap2.transport.HttpTransportSE; 
import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserFactory; 

import android.app.Activity; 
import android.os.Bundle; 

public class SoapWebservicesExampleActivity extends Activity { 
    /** Called when the activity is first created. */ 
     final String NAMESPACE = "urn:sap-com:document:sap:soap:functions:mc-style"; 
    final String URL = "http://**********:8000/sap/bc/srt/wsdl/srvc_14DAE9C8D79F1EE196F1FC6C6518A345/wsdl11/allinone/ws_policy/document?sap-client=800&sap-user=************&sap-password=*********"; 
     final String METHOD_NAME = "Z_GET_CUST_GEN"; 
    final String SOAP_ACTION = "urn:sap-com:document:sap:soap:functions:mc-style/Z_GET_CUST_GEN"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); // set up 
      request.addProperty("Input", "1460"); 
      request.addProperty("Langu", "d"); 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12); // put all required data into a soap 
      envelope.dotNet = true; 
      envelope.setOutputSoapObject(request); 
      HttpTransportSE httpTransport = new HttpTransportSE(URL); 
      httpTransport.debug = true; 

      try { 


       httpTransport.call(SOAP_ACTION, envelope); 
       SoapObject response = (SoapObject)envelope.getResponse(); 
       String str = response.getProperty(0).toString(); 

       System.out.println("theeeeeeeeeee"+str); 



       } 
      catch(SocketException ex){ 
        ex.printStackTrace(); 

       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
     } 


    } 

benim son kod seferde bakmak ve bana

Yukarıdaki kodda o dönüşümü koyabilirsiniz

bildirin lütfen?

cevap

14
String response = convertStreamToString(instream); 

Bu şekilde deneyebilirsiniz

private String convertStreamToString(InputStream is) { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line).append('\n'); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      is.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 
+0

sayesinde nerede ben yukarıdaki kodda ekleyebilirsiniz? – user1414667

+0

kısacası istediğinizde ne demek istediğimi ekleyebilirsin –

+0

ust şimdi benim bütün kodumu düzenledim, lütfen bir kere bakın ve bu istisnanın neden benim logtomda geldiğini bana bildirin – user1414667

0

Yöntem:

SoapObject response = (SoapObject)envelope.getResponse(); 
String str = response.getProperty(0).toString(); 

str içeriği yapacak, sen gereksinimi bağlı daha da ayrıştırmak gerekir. Ayrıca bunu ayrıştırmak nasıl bir bağlantı vardır yanı bu bağlantıyı ziyaret ediniz.

http://android-devblog.blogspot.com/2010/06/soap-on-android.html

bu hatayı veren olduğu gibi sabun VER11 yerine VER12 kullanmayı deneyin.

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

//

daha fazla bilgi Bu bağlantıdan bu konuda bulunabilmektedir bir sabun içine gerekli tüm veri koymak: http://groups.google.com/group/android-developers/browse_thread/thread/b585862b6e939fd2

+0

Teşekkürler cevap için istisna alıyorum 05-25 16: 15: 31.205: WARN/System.err (1458): org.xmlpull.v1.XmlPullParserException: beklenen: START_TAG {http://www.w3.org/ 2001/12/sabun zarf} zarf (konum: START_TAGyeni <{http: //schemas.xmlsoap.org/wsdl /} wsdl: define targetNamespace = 'urn: sap-com: document: sap: soap: functions: mc stili'> @ 1: 686 [email protected]) – user1414667

+0

Cevabı güncelledim – UVM

+0

mana şimdi aynı istisna alıyorum? – user1414667

3

okuma hatları (her ikisi de \ N \ r, hiçbir fark) karışıklık yaratabilir. Bir InputStream'den bir String almak için, aşağıdaki yöntemi kopyala/yapıştırmanızı ve ihtiyacınız olan yere çağırmanızı tavsiye ederim.

public static String getStringFromInputStream(InputStream stream, String charsetName) throws IOException 
{ 
    int n = 0; 
    char[] buffer = new char[1024 * 4]; 
    InputStreamReader reader = new InputStreamReader(stream, charsetName); 
    StringWriter writer = new StringWriter(); 
    while (-1 != (n = reader.read(buffer))) writer.write(buffer, 0, n); 
    return writer.toString(); 
} 
2

Shane McC article dayanarak bu yöntemi kullanarak yapabilirsiniz:

public String readFully(InputStream entityResponse) throws IOException { 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
byte[] buffer = new byte[1024]; 
int length = 0; 
while ((length = entityResponse.read(buffer)) != -1) { 
    baos.write(buffer, 0, length); 
} 
return baos.toString(); 
} 
0

Sen kullanabilirsiniz: Eğer sürüme org.apache.commons.io.jar eklemem gerekiyor

String response = org.apache.commons.io.IOUtils.toString(instream, "UTF-8"); 

yolu. ur cevap için

+0

Bu kütüphane android'de mevcut değil – cholewa1992

+1

org.apache.commons.io.jar eklemeniz gerek –