지금까지 PHP 클라이언트와 VB.NET 클라이언트를 만들었습니다. 둘 다 성공적으로 PHP 웹 서비스를 호출합니다. 후자가 작동하도록하려면 SourceForge에서 SoapUI 도구를 사용해야했습니다. 그것은 내 wsdl이 WS-I를 따르지 않는다고 말했습니다. 비누 요청을 직접 편집 할 수 있도록 대화 형으로 서비스를 테스트하기 위해 Pro 버전이 필요하지 않았습니다. 내 WSDL을 수정하고 내 VB.Net 클라이언트를 작동 시키면 안드로이드가 여전히 문제가됩니다.ksoap2-android를 사용하여 PHP 웹 서비스를 올바르게 호출하려면 어떻게해야합니까?
나는 또한 attached the source code for ksoap2-andriod이므로 디버깅하는 동안 단계별로 수행 할 수 있습니다. 도움이되었지만 소스가 포함되지 않은 번들로 된 종속성이 있습니다 (특히 "kxml2 v1.6"). 누구든지 소스 zip이나 Jar를 가리켜 주시면 고맙겠습니다.
내 안드로이드 클라이언트에서 PHP webservice를 호출 할 때 발생하는 오류입니다. 는 WSDL의 \ XML을 구문 분석하지 못할 말해
org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <definitions name='naturallyIrrationalsoapserver' targetNamespace='http://www.naturallyIrrational.com'>@10:42 in [email protected])
그것 - 10.42 @ poistion 오프닝 정의 태그의 끝입니다.
WSDL의 WS-I 준수로 인해이 서비스 네임 스페이스 정의가 Ksoap2에 의해 해석되는 것과 관련이 있다고 생각합니다. 여기 내 안드로이드 클라이언트 코드를 호출하는 데 사용됩니다.
public class SoapClientActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView) findViewById(R.id.myText);
String soapResponse="";
final String METHOD_NAME = "getArrval";
final String SOAP_ACTION = "http://www.naturallyIrrational.com/naturallyIrrationalsoapserver.wsdl";
final String NAMESPACE = "http://www.naturallyIrrational.com";
*이 다음 라인은 정확하고 를 표시해야한다 http://www.naturallyIrrational.com/naturallyIrrationalsoapserver.php *
final String URL = "http://www.naturallyIrrational.com/naturallyIrrationalsoapserver.wsdl";
if (InternetStatus.getInstance(this).isOnline(this)) {
try{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo pi = new PropertyInfo();
pi.setName("valname");
pi.setValue("rt2");
pi.setType(String.class);
request.addProperty(pi);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=false;
envelope.setOutputSoapObject(request);
HttpTransportSE andHttpTransport = new HttpTransportSE(URL);
andHttpTransport.debug = true;
andHttpTransport.call(SOAP_ACTION, envelope);
*이이 값을 반환 뭔가 잘못, 그것은 수신 된입니다 만 통과 할 때 오류가 발생합니다 ksoap에서 돌아 가기 *
내가 바보 같은 일을하고 있고 어떤 사람이 그것을 지적 할 수 있다면 그것을 고맙게 생각할 것입니다.
PHP처럼 Android에서 wsdl을 캐시하고 다시 사용하지 않도록하는 지시문이 있습니까?
어쩌면 net beans를 사용하면 다음에 시간이 생길 때가 있습니다. 중간에 도움을 청할 수있는 사람이 있다면 주저없이 제안하십시오.
<?php
class naturallyIrrational {
private $arrval = array("pi" => 3.1415,"e" => 2.7183, "rt2" => 1.414, "phi" => 1.618);
function getIrrationalvalue($valname) {
$myFile = "logFile.html";
$fh = fopen($myFile, 'a') or die("can't open file");
$datq = date('m/d/Y h:i:s a', time());
fwrite($fh, $datq);
if (isset($this->arrval[$valname])) {
$stringData = " ".$valname." = ".$this->arrval[$valname]."<br/>";
fwrite($fh, $stringData);
fclose($fh);
return $this->arrval[$valname];
} else {
throw new SoapFault("Server","Unknown Symbol '$valname'.");
}
}
}
$server = new SoapServer("naturallyIrrational.wsdl");
$server->setClass("naturallyIrrational");
$server->handle();
WSDL이 지정됩니다. http://www.w3.org/TR/wsdl – hakre
웹 서비스 작성/사용과 관련하여, 현재의 견해는 "SOAP 이외"입니다. SOAP은 "심각하게 이상 건축 프로토콜"의 약자입니다. 그것은 설정하는 것이 고통 스럽습니다, 천천히, 그것은 부서지기 쉬운 경향이 있습니다. 더 많은 대안이 있습니다. 선택의 여지가있는 경우 SOAP을 덤프하고 나머지, JSON 또는 절약 명함으로 이동하십시오. – SDC
의견을 보내 주셔서 감사 드리며, 또한 Restful JSON 솔루션을 살펴 보겠습니다. 존중과 함께 여기에 내 질문은 특히 SOAP 작동에 관한 것입니다. 내가 만들고있는 WSDL이 정확하다는 것을 확신하고 싶습니다. 바로 가기가 없다면 WSDL 사양 (링크 hakra에 대한 감사)을 통해 작업하겠습니다. NET 비누 툴킷이 유틸리티를 사용하여 WSDL을 자동으로 생성하는 것과 같이 나를 도울 수있는 방법이 있습니다. – Kickaha