我的问题是 Dom 解析器在 Android 4.0 中不起作用,但它在 2.2 上运行,如果我在我的 4.0 模拟器中运行该项目,那么下面一行不执行,这不会给出任何错误。
Document doc = db.parse(inStream);
以下是我的Java代码:-
public class TestParsingActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StringBuffer sb = new StringBuffer();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "192.168.1.220");
System.setProperty("http.proxyPort", "315");
String NAMESPACE = "Dipak";
String SOAP_ACTION = "Dipak/Start";
String METHOD_NAME = "Start";
String url = "http://google.co.uk/Dip/service1.asmx";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo p = new PropertyInfo();
String qry = "select Password from Profiles where ID = (select uid from userprofiles where name = 'Dipak')";
p.setName("SQL");
p.setValue(qry);
request.addProperty(p);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(url);
httpTransport.debug = true;
System.out.println("three**************");
try {
httpTransport.call(SOAP_ACTION, envelope);
System.out.println("four**************");
// SoapObject response=(SoapObject)envelope.bodyIn;
SoapObject response = (SoapObject) envelope.getResponse();
System.out.println("response =====>>>> "
+ response.getProperty(0).toString());
// SoapObject response=(SoapObject)envelope.getResponse();
// SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
System.out.println("success**************");
sb.append(response);
System.out.println("Data from Search Job =====>>>> "
+ sb.toString());
// return response.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
InputSource inStream = new InputSource();
System.out.println("Data from try =====>>>> " + sb.toString());
inStream.setCharacterStream(new StringReader(sb.toString()));
System.out
.println("Data from try =====>>>>11111111111111111111111111111 ");
Document doc = db.parse(inStream);
System.out
.println("Data from try =====>>>>22222222222222222222222222222 ");
Element root = doc.getDocumentElement();
String root1 = doc.getTextContent();
System.out
.println("Value of root................................................................................"
+ root);
System.out
.println("Value of root1................................................................................"
+ root1);
System.out
.println("................................................................................5");
} catch (Exception e) {
// TODO: handle exception
}
}
}
任何帮助将不胜感激,对不起我的英语沟通不好。
你为什么不使用
response.getPropertyAsString(index);
或
response.getPropertyAsString("PROPERTY_NAME");
?
但是你仍然想使用 Dom 解析器,你可以使用 HttpTransportSE.responseDump
来获取 XML 格式的响应,并尝试解析 XML 而不是 ksaop2 的响应格式。