Code Monkey home page Code Monkey logo

kdsoap's Introduction

Introduction

KD Soap is a Qt-based client-side and server-side SOAP component.

It can be used to create client applications for web services and also provides the means to create web services without the need for any further component such as a dedicated web server.

KD Soap targets C++ programmers who use Qt in their applications.

For more information, see https://www.kdab.com/development-resources/qt-tools/kd-soap

Using KD Soap

KD Soap requires Qt 5.9.0 or newer, and a compiler with C++11 support. Qt6 support is added starting with KD Soap version 2.0, and requires a compiler with C++17 support.

See INSTALL.txt for installation instructions using CMake.

Learn more at our:

Contact

Stay up-to-date with KDAB product announcements:

Get Involved

KDAB will happily accept external contributions.

Please submit your contributions or issue reports from our GitHub space at https://github.com/KDAB/KDSoap.

Thanks to our contributors.

License

The KD Soap Software is © Klarälvdalens Datakonsult AB (KDAB), and is available under the terms of the MIT license.

Contact KDAB at [email protected] for any licensing queries.

Note that this project requires the 3rd party 'libkode' submodule that is licensed separately with LGPL-2.0-or-later; however, libkode is used for code-generation only and the resulting code can be made available under any license.

Various other freely distributable files are contained in the unittests and are not used in the library code itself.

About KDAB

KD Soap is supported and maintained by Klarälvdalens Datakonsult AB (KDAB).

The KDAB Group is the global No.1 software consultancy for Qt, C++ and OpenGL applications across desktop, embedded and mobile platforms.

The KDAB Group provides consulting and mentoring for developing Qt applications from scratch and in porting from all popular and legacy frameworks to Qt. We continue to help develop parts of Qt and are one of the major contributors to the Qt Project. We can give advanced or standard trainings anywhere around the globe on Qt as well as C++, OpenGL, 3D and more.

Please visit https://www.kdab.com to meet the people who write code like this.

KD SOAP and the KD SOAP logo are registered trademarks of Klaralvdalens Datakonsult AB in the European Union, the United States, and/or other countries. Other product and company names and logos may be trademarks or registered trademarks of their respective companies.

kdsoap's People

Contributors

aholza avatar albert-astals-cid-kdab avatar anoymouserver avatar bbreitmeyer avatar caspermeijn avatar dantti avatar dfaure avatar dfaure-kdab avatar frankosterfeld avatar hsitter avatar knarf64 avatar kpales avatar krake-kdab avatar krf avatar krnowak avatar marc-kdab avatar martonmiklos avatar mbaum2000 avatar mbroadst avatar montel avatar omar-sharif-nautilus avatar phbaer avatar postrstk avatar pre-commit-ci[bot] avatar raphaelcotty avatar ryanenzo avatar sengels avatar villevoutilainen avatar vkrause avatar winterz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kdsoap's Issues

Network connection

If disable Network Connection or go to Sleep, KDSoap loss connection.
After enable Network, I try call SOAP method and KDSoap dont work correctly.

This bug found on Windows 7

error in installation : ImportError: cannot import name ForwardHeaderGenerator

I'm running python 2.7.5 on Ubuntu 14.04
I'm trying to install the library KD Soap and I get this error :

user@server:/path/KDSoap-master/autogen$ python autogen.py
Traceback (most recent call last):
File "autogen.py", line 11, in
from header import ForwardHeaderGenerator
File "/path/KDSoap-master/autogen/header.py", line 6, in
import autogen
File "/path/KDSoap-master/autogen/autogen.py", line 11, in
from header import ForwardHeaderGenerator
ImportError: cannot import name ForwardHeaderGenerator

autogen.py fails on windows (no module named cpack)

I am doing this:

git clone https://github.com/KDAB/KDSoap.git
cd KDSoap
git submodule update --init
set PATH=%PATH%;C:\Qt\qt-5.0.1\qtbase\bin
autogen.py

... and get the following error trace:

Traceback (most recent call last):
File "C:\Qt\KDSoap\autogen.py", line 2, in
from autogen.autogen import autogen
File "C:\Qt\KDSoap\autogen\autogen.py", line 3, in
from cpack import CPackGenerateConfiguration
ImportError: No module named 'cpack'

WS-* Support

I'm trying to figure out which WS-* specifications the library support but I can't find this information anywhere?

What is the current WS-* specification support status? The only information I could find was that SOAP 1.2 support is coming soon. Also which is the WS-I Basic Profile version supported by the library?

wsdl file message part return type mismatch on generated async subroutine

Example:

<message name="SetDesiredLengthResponse">
      <part name="reply" type="xsd:boolean"/>
</message>

The generated prototypes are:

bool setDesiredLength( const QString& uom, int wholenum, int fractionalnum );
void asyncSetDesiredLength( const QString& uom, int wholenum, int fractionalnum );

The async prototype has the wrong return type of "void".

a .h file generation problem and soap client with the command kdwsdl2cpp

I have a problem I try to generate a .h file from a wsdl file with the command here is the result kdwsdl2cpp :

importing schema at file:///home/meditrans/KDSoap/KDSoap/xsd/CTX/ROOT_ctxlps_CTXLPS_V01_00.xsd
importing schema at file:///home/meditrans/KDSoap/KDSoap/xsd/CTX/ROOT_ctxbam_CTXBAM_V01_02.xsd
importing schema at http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
Downloading 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
Download successful
importing schema at http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
Downloading 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'
Download successful
importing schema at http://www.w3.org/2001/xml.xsd
Downloading 'http://www.w3.org/2001/

Order finished without error but I do not find the .h file to generate the soap client.

kdwsdl2cpp error ONVIF tt:ReferenceToken

Hey guys,
I recently started using KDSoap and kdwsdl2cpp and I'm really excited with seeing what it does. However, I'm getting some problems when trying to convert certain .wsdl's.
The following problems occurs to me when I try to convert the ImagingBinding wsdl from ONVIF:
http://www.onvif.org/Documents/Specifications.aspx
http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl

kdwsdl2cpp -o imaging.h imaging.wsdl
importing schema at /schema/onvif.xsd
Downloading '/schema/onvif.xsd'
QSslSocket: cannot resolve TLSv1_1_client_method
QSslSocket: cannot resolve TLSv1_2_client_method
QSslSocket: cannot resolve TLSv1_1_server_method
QSslSocket: cannot resolve TLSv1_2_server_method
QSslSocket: cannot resolve SSL_select_next_proto
QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
Error downloading '/schema/onvif.xsd': Protocol "" is unknown
No service tag found in the wsdl file, generating one service per binding
Converting 0 simple types
Converting 17 complex types
ERROR: basic type not found: "tt:ReferenceToken"
ASSERT: "!typeName.isEmpty()" in file ../kdwsdl2cpp/src/converter_complextype.cpp, line 146
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Similar ONVIF WSDL's give the same problem at the tt:ReferenceToken.
I'm pretty new to all of this, so I may have done something which made it work different which may have to do with this issue:
On line 14 in imaging.wsdl, I changed schemaLocation to "/schema/onvif.xsd". I have a local copy of this on my harddrive at this path location. Without this, I would get an error about not being able to find schema.

After reading up on it some more, I get the feeling that the importing of schema's is where it's going wrong. This leads to my question: Does kdwsdl2cpp support external schema's, or do I have to rework all schema's that are being called to be physically present in the wsdl?

Qt KDSoapServer and KDSoapServerObjectInterface Coexistence

I'm trying to get signals to a QML UI to work.

When the soap client sends a soap request to the KDSoapServer I have a signal being sent to the QML UI.

The problem is the KDSoapServer created by createServerObject doesn't seem to be able to send the signal to the QML UI.

I have a "apiserver" class that inherits the wsdl generated class and implements KDSoapServerObjectInterface. This class has the signals added to it's header file.

I couldn't add the KDSoapServer to the context directly but if I used multiple inheritance of both apiserver and KDSoapServer. This allowed me to add the apiserver class to the context and create the KDSoapServer as well.

With the multiple inheritance the QML UI can call a slot and if the slot calls a signal the QML UI receives it but the signals fail if called in a wsdl function.

Crash in slotSslErrors

When making synchronous calls KDSoapSslHandler::slotSslErrors is called but the sender is null causing the Q_ASSERT to fail.

Client-side MTOM/XOP support

Hi there,

this is actually not really an issue but should be considered more like a question: I've implemented quick-any-dirty, prove-of-concept-ish support for MTOM/XOP attachments in on the client side (phbaer@278cef4). It only uses the start attachment and ignores all the other if there are any. It even does not properly check the MIME types yet, so ... it's really just a POC. It works pretty well for my use case which is a very simple one without binary attachments (and actually currently only a single attachment; unfortunately, the service always replies with MTOM/XOP compression enabled).

My question is now: would you/KDAB be interested in client-side MTOM/XOP support?

Thanks and cheers, phb

Assert in kdwsdl2cpp for WSDLs with binding style "rpc"

An assert occurs in Converter::convertClientCall for WSDLs with binding style "rpc" that contain methods that don't return a value. The code in Converter::convertClientCall assumes that if a method doesn't have a single return value it therefore has multiple returns values, however it could have no return values. I have a patch that I think fixes the problem in the following branch https://github.com/cjh1/KDSoap/tree/fix-kdwsdl2cpp-rpc-no-return-assert. I can generate a pull request if necessary. The following test WSDL illustrates the problem:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="https://www.test.com/testapiv3/testapi.jws" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="https://www.test.com/testapiv3/testapi.jws" xmlns:intf="https://www.test.com/testapiv3/testapi.jws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <wsdl:types>
  <schema targetNamespace="https://www.test.com/testapiv3/testapi.jws" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="ArrayOf_xsd_string">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
     </restriction>
    </complexContent>
   </complexType>
  </schema>
 </wsdl:types>

   <wsdl:message name="createDirectoryRequest">

      <wsdl:part name="token" type="xsd:string"/>

      <wsdl:part name="hostID" type="xsd:long"/>

      <wsdl:part name="username" type="xsd:string"/>

      <wsdl:part name="directory" type="xsd:string"/>

   </wsdl:message>

   <wsdl:message name="createDirectoryResponse">

   </wsdl:message>


   <wsdl:portType name="testapi">

      <wsdl:operation name="createDirectory" parameterOrder="token hostID username directory">

         <wsdl:input message="impl:createDirectoryRequest" name="createDirectoryRequest"/>

         <wsdl:output message="impl:createDirectoryResponse" name="createDirectoryResponse"/>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="testapiSoapBinding" type="impl:testapi">

      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="createDirectory">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="createDirectoryRequest">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>

         </wsdl:input>

         <wsdl:output name="createDirectoryResponse">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://www.test.com/testapiv3/testapi.jws" use="encoded"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="testapiService">

      <wsdl:port binding="impl:testapiSoapBinding" name="testapi">

         <wsdlsoap:address location="https://www.test.com/testapiv3/testapi.jws"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>

kdwsdl2cpp wont work on specific service NCBI/BLAST

I have encountered a SOAP service where kdwsdl2cpp wont work for me.

Service Description: http://www.ncbi.nlm.nih.gov/books/NBK55699/#SOAP_BLAST.Retrieving_a_list_of_suppor_2
Service WSDL: http://www.ncbi.nlm.nih.gov/blast/netblast/blastws.cgi?WSDL

Command line output:

/usr/local/KDAB/KDSoap-1.4.50/bin/kdwsdl2cpp -o wsdl_realNCBI.h http://www.ncbi.nlm.nih.gov/blast/netblast/blastws.cgi?WSDL
Downloading 'http://www.ncbi.nlm.nih.gov/blast/netblast/blastws.cgi?WSDL'
Download successful
Importing wsdl definition at http://www.ncbi.nlm.nih.gov/data_specs/ver/20110222/schema_alt/NCBI_Blast4_20110222.xsd
Downloading 'http://www.ncbi.nlm.nih.gov/data_specs/ver/20110222/schema_alt/NCBI_Blast4_20110222.xsd'
Download successful
No definition tag found in imported wsdl file http://www.ncbi.nlm.nih.gov/data_specs/ver/20110222/schema_alt/NCBI_Blast4_20110222.xsd
in message "ns:SubmitSearchRequest" : element not found: "ns:Blast4-queue-search-request"
in message "ns:CheckSearchStatusRequest" : element not found: "ns:Blast4-get-search-status-request"
in message "ns:GetDatabasesResponse" : element not found: "ns:Blast4-get-databases-reply"
in message "ns:GetSupportedMatricesResponse" : element not found: "ns:Blast4-get-matrices-reply"
in message "ns:GetSupportedOptionsResponse" : element not found: "ns:Blast4-get-parameters-reply"
in message "ns:GetSupportedProgramsResponse" : element not found: "ns:Blast4-get-programs-reply"
in message "ns:GetSequencesResponse" : element not found: "ns:Blast4-get-sequences-reply"
in message "ns:GetSearchResultsResponse" : element not found: "ns:Blast4-get-search-results-reply"
in message "ns:GetSupportedProgramsRequest" : element not found: "ns:Blast4-request"
in message "ns:SubmitSearchLiteRequest" : element not found: "ns:Blast4-queue-search-request-lite"
in message "ns:GetDatabasesRequest" : element not found: "ns:Blast4-request"
in message "ns:GetSearchResultsRequest" : element not found: "ns:Blast4-get-search-results-request"
in message "ns:GetSearchStrategyRequest" : element not found: "ns:Blast4-get-search-strategy-request"
in message "ns:SubmitSearchResponse" : element not found: "ns:Blast4-queue-search-reply"
in message "ns:GetSupportedTasksResponse" : element not found: "ns:Blast4-get-paramsets-reply"
in message "ns:GetSupportedOptionsRequest" : element not found: "ns:Blast4-request"
in message "ns:GetSequencesRequest" : element not found: "ns:Blast4-get-sequences-request"
in message "ns:GetSupportedMatricesRequest" : element not found: "ns:Blast4-request"
in message "ns:CheckSearchStatusResponse" : element not found: "ns:Blast4-get-search-status-reply"
in message "ns:GetSearchStrategyResponse" : element not found: "ns:Blast4-get-search-strategy-reply"
in message "ns:GetSupportedTasksRequest" : element not found: "ns:Blast4-request"
Converting 0 simple types
Converting 0 complex types
ERROR: element not found: "ns:Blast4-queue-search-request-lite"
TypeMap::localTypeForElement: unknown type "ns:Blast4-queue-search-reply"
Could not generate operation 'SubmitSearchLite'

I can import the WSDL successfully in SOAPUI and if I remember correclty gSoap imported this too, so my guess is the service in itself is correct/fine.

Any help would be greatly appreciated!

Add support for mixed content

Trying to generate code using this wsdl:

http://www.axis.com/vapix/ws/event1/EventService.wsdl

give the following error:

kdwsdl2cpp -o wsdl_axiseventservice.h EventService.wsdl 
importing schema at http://docs.oasis-open.org/wsn/t-1.xsd
Downloading 'http://docs.oasis-open.org/wsn/t-1.xsd'
Download successful
importing schema at http://docs.oasis-open.org/wsn/b-2.xsd
Downloading 'http://docs.oasis-open.org/wsn/b-2.xsd'
Download successful
importing schema at http://www.w3.org/2005/08/addressing/ws-addr.xsd
Downloading 'http://www.w3.org/2005/08/addressing/ws-addr.xsd'
Download successful
importing schema at http://docs.oasis-open.org/wsrf/bf-2.xsd
Downloading 'http://docs.oasis-open.org/wsrf/bf-2.xsd'
Download successful
importing schema at http://www.w3.org/2001/xml.xsd
Downloading 'http://www.w3.org/2001/xml.xsd'
Download successful
<complexContent>: No support for mixed=true

It's not possible to know whether an optional element was set from the API of the generated code

The code generator puts _nil bool flags for optional elements into the PrivateDPtr class of a complex type. However, the generated getters for these elements return by value, and they don't take the internal _nil flags into account in any way. Therefore it's possible that an optional element wasn't in the soap message, but getting it returns a default-constructed data object for it. That is just wrong, because optional elements that hold numeric values are returned as holding zeroes, which may be valid. This is a data corruption problem in the worst case.

KDSOAP + HTTPS (Qt)

hi all
can anybody to help me?
I need example on Qt
I try to use the generated code with kdwsdl2cpp from wsdl, but how I can work with https connection? all examples wich I find uses only http...
Thanks and sorry for my bad English

wsaw:UsingAddressing is ignored

After I have solved my problems described in the issue #39 I have faced with the following errorString() from my queries:

Error downloading https://adatkuldes-teszt.nemzetidohany.gov.hu:8444/nd/MasterData.svc - server replied: Cannot process the message because the content type 'application/soap+xml;charset=utf-8;action=http://localhost/nd/communication/IMasterData/GetManufacturers' was not the expected type 'application/soap+xml; charset=utf-8'.

After some investigation I have figured out that the action part have to be removed from the content type and a soap:header tag have to be added to the soap envelope containing a wsa:Action element which contains the soap action.

My WSDL file contains an wsaw:UsingAddressing element in the wsp:Policy tag (which is unparsed by the kdwsdl2cpp).

I understand that the support for parsing the Policies would require a lot of work, but would not be a viable method to implement the parsing of the policies partially first by only looking for the wsaw:UsingAddressing element?

Error with wrapper of Types when the type name contains dots

Considering the following Type:

<xsd:simpleType name="wsChoiceCategory.RequirementLevel">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="ZeroOrOne"/>
        <xsd:enumeration value="ZeroOrMore"/>
        <xsd:enumeration value="ExactlyOne"/>
        <xsd:enumeration value="OneOrMore"/>
    </xsd:restriction>
</xsd:simpleType>

The system generates the following code:

class __WsChoiceCategory.RequirementLevel
{
public:
    enum Type { ZeroOrOne, ZeroOrMore, ExactlyOne, OneOrMore };

public:
    __WsChoiceCategory.RequirementLevel( const Type &type );
    void setType( Type type );
    __WsChoiceCategory.RequirementLevel::Type type() const;
    operator Type() const;
    QVariant serialize() const;
    void deserialize( const QVariant& value );
    __WsChoiceCategory.RequirementLevel();
    ~__WsChoiceCategory.RequirementLevel();

private:
    Type mType;
};

But the name of the class cannot contain the dot symbol, is there a way to avoid it?

Thank you very much :)

thread safety

Hello,
could it be, that the client code generated by kdwsdl2cpp is not thread safe?
When calling "executeCommand" simultaneously in concurrent threads I get weird crashes. With a single thread It is working like a charm though.

I couldn't find any documentation about the client side thread safety and therefore appreciate any comment on it.
Thank you in advance
Stefan

kdwsdl2cpp generates incompilable code when a WSDL type contains a dot (.) in the name

I would like to communicate with a webservice which has the following WSDL file:
https://dl.dropboxusercontent.com/u/4295670/ndn_trafik_specification/MasterData.svc

Unfortunatelly the kdwsdl2cpp generated codes cannot be compiled because the ReasonCode.ReasonCodeEnum simple type name is generated directly to the classnames, members etc. I have no access to the webservice, so I cannot change the WSDL itself.
I have already patched the kdwsdl2cpp source to replace the non C++ conform characters in the generated code with an underscore.

If possible I would like to push it upstream, but before I would like to get some recommendation on the final implementation method.

I have added a static "cppName" member to the KODE::Class which returns with a string which is C++ conform, and I have used it where the type names get printed.

Question about multiple services

Hi

I am using a WSDL that specifies three services. At the moment for my server I start three separate servers, these listen on separate ports (e.g 8081, 8082, 8083). Soon I will need to add lots more services and using this approach this would consume many more ports. This is going to cause problems for users.

What I would like to do is to run multiple services on a single port by assigning them different paths. e.g http://127.0.0.0/service1, http://127.0.0.0/service2 etc. Although I can set paths with the current library I have to start a listener on a separate port for each service.

Is there any way that I can achieve the single port system or is it fundamentally not possible with KDSOAP?

Many Thanks In advance

Getting HTTP headers while processing a request

Hi,

I've built a KDSOAP client/server application with success so far but I would like now to send a cookie along with my requests. While I'm able to effectively send the cookie to the server (I could see it in the HTTP headers of my requests), I'm unable to retrieve it using the current server-side implementation.

To be more specific, the HTTP headers are extracted in the slotReadyRead method of KDSoapServerSocket (KDSoapServerSocket.cpp, line 160, 1.4.0 release) but are not available in the processRequest/processRequestwithPath methods which are called in the makeCall method of KDSoapServerSocket.

I could provide a fix for this if need be or am I missing something?

Best regards,
Razvan

Inheritance in request's argument causes incomplete request

Hi

I think I have serious issue in the generated code.

I have tried to use Novell groupwise webservice (wsdl & schemas ftp://sdk.provo.novell.com/ndk/gwsoap/builds/cross_platform/schemas.zip - use the files from directory 1200 - I cannot attach it here directly :( ) and I had no success.

The first call that needs to be done is loginRequest, which takes one argument TYPE__Authentication. However, the TYPE__Authentication is not a really useful class, it is just a base class and other "real" authentication classes are inherited from it

So I created TYPE__PlainText, which is just TYPE__Authentication + string password and created the METHOD__LoginRequest with this authentication

Than I executed the request and got error. After some debugging, I found that the password is not part of the xml sent to server. After further debugging, I found the cause:

void METHODS__LoginRequest::setAuth( const TYPES__Authentication& auth )
{
d_ptr->mAuth = auth;
}

The authentication object is passed as TYPE__Authentication & and not as TYPE__Authentication *. In the assignment the password is lost, since only the TYPES__Authentication members are copied. So at the moment, when the LoginRequest is serialized to xml, it contains just TYPE__Authentication and not TYPE__PlainText.

commands to generate the code from wsdl:
kdwsdl2cpp -namespace groupwise::soap -o groupwise_soap.h groupwise.wsdl
kdwsdl2cpp -namespace groupwise::soap -o groupwise_soap.cpp -impl groupwise_soap.h groupwise.wsdl

fault and sync calls

Hi,

I have a service that return an empty response if there is no error ,

generating the code from wsdl and using the generated code seems there is no way to understand if a sync call returned a fault, in this case an empty response means both ok and fault, here is a snippet for the generated code:

d_ptr->m_lastReply = clientInterface()->call(QLatin1String("updateObjs"), message, action);
    if (d_ptr->m_lastReply.isFault())
        return TNS0__UpdateObjResponseElement();
    TNS0__UpdateObjResponseElement ret;
    ret.deserialize(d_ptr->m_lastReply);// converter_clientstub.cpp:515
    return ret;// converter_clientstub.cpp:566

d_ptr is private, kdsoap should give a way other than an empty response to understand if a sync call had a fault, maybe the generated code could look like this:

TNS0__UpdateObjResponseElement PREFIX::updateObjs( const TNS0__UpdateObjElement& parameters, bool *ok=0 )
....

and set ok (if passed) to false if a fault happen, otherwise to true

crash in KDSoapClientThread -> KDSoapPendingCall::Private::~Private

Hello,

my team is running into the following problem:

We used the KDSoap code generation for the following code:

PocuseServiceClient::TNS__DoBusinessTaskResponse PocuseServiceClient::PocuseService::PocuseServiceSoap::doBusinessTask( const PocuseServiceClient::TNS__DoBusinessTask& parameters )
{
const QString action = QString::fromLatin1("http://www.prite.com/wsdl/doBusinessTask");
KDSoapMessage message;
message.setUse(KDSoapMessage::LiteralUse);
KDSoapValue _valueDoBusinessTask(parameters.serialize(QString::fromLatin1("doBusinessTask")));// .\converter_complextype.cpp:209
_valueDoBusinessTask.setNamespaceUri(QString::fromLatin1("http://www.prite.com/wsdl/"));
_valueDoBusinessTask.setQualified(true);
message = _valueDoBusinessTask;// .\converter_complextype.cpp:223
d_ptr->m_lastReply = clientInterface()->call(QLatin1String("doBusinessTask"), message, action);
if (d_ptr->m_lastReply.isFault())
return PocuseServiceClient::TNS__DoBusinessTaskResponse();
PocuseServiceClient::TNS__DoBusinessTaskResponse ret;
ret.deserialize(d_ptr->m_lastReply);// .\converter_clientstub.cpp:519
return ret;// .\converter_clientstub.cpp:573
}

However, it is crashing when executing the following line:
d_ptr->m_lastReply = clientInterface()->call(QLatin1String("doBusinessTask"), message, action);
It crashes in the KDSoapClientThread in a QScopedPointerDeleter::cleanup(...) method. Here it is deleting an already deleted object. Obviously this is the problem, but we don't have control over this section of the KDSoap code. Looking at the call stack of this thread I see that the KDSoapPendingCall::Private::~Private destructor is involved.
Also I have no idea which object the scopedpointer tries to delete and where it already got deleted.

How can we debug this?

Thanks
Stefan

ommit empty xml tags

ommit empty xml tags if no info is given.

e.g. <n1:example xsi:nil="true" />

on by default, ability to disable the output

KDsoap client gives error when a field contains special characters.

I find kdsoap (client) give the following error when when a special character is found in one of the fields.
Fault code 3: XML error: [1:6902730] Invalid character reference.

Is there any way to avoid this error. I need kdsoap to print all the data received from webserive.

Dependency on QtGui

It looks like KDSoap depends on QtGui, which doesn't seem necessary to me. If possible, could this dependency be lifted? Which functionality depends on it?

server return a 0 bytes response, response with an empy element is expected

please take a look at this server method implementation:

TNS0__ListResponseElement resp;
QList<TNS0__MyList> l;
resp.setResult(l);
return resp;

if no element is setted in the list a zero byte response is returned (http 204), the expected return value is a response element with no values inside, something like this

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <n1:listResponseElement xmlns:n1="http://test.example.com/types/" />
   </soap:Body>
</soap:Envelope>

archlinux packages

Hi,

I uploaded archlinux packages to aur:

https://aur.archlinux.org/packages/kdsoap
https://aur.archlinux.org/packages/kdsoap-qt4

basically I build the packages with this configure line (you can see further details inside the PKGBUILD):

./configure.sh -release -shared -prefix /usr

kdsoap-qt4 package install these files:

pacman -Ql kdsoap-qt4
kdsoap-qt4 /usr/
kdsoap-qt4 /usr/bin/
kdsoap-qt4 /usr/bin/kdwsdl2cpp
kdsoap-qt4 /usr/include/
kdsoap-qt4 /usr/include/KDSoapClient/
kdsoap-qt4 /usr/include/KDSoapClient/KDDateTime
kdsoap-qt4 /usr/include/KDSoapClient/KDDateTime.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoap
kdsoap-qt4 /usr/include/KDSoapClient/KDSoap.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapAuthentication
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapAuthentication.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapClient
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapClientInterface
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapClientInterface.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapFaultException
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapFaultException.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapGlobal
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapGlobal.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapHeaders
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapJob
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapJob.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapMessage
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapMessage.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapNamespaceManager
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapNamespaceManager.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapPendingCall
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapPendingCall.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapPendingCallWatcher
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapPendingCallWatcher.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapSslHandler
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapSslHandler.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapValue
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapValue.h
kdsoap-qt4 /usr/include/KDSoapClient/KDSoapValueList
kdsoap-qt4 /usr/include/KDSoapServer/
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapDelayedResponseHandle
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapDelayedResponseHandle.h
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapServer
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapServer.h
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapServerAuthInterface
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapServerAuthInterface.h
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapServerGlobal
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapServerGlobal.h
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapServerObjectInterface
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapServerObjectInterface.h
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapThreadPool
kdsoap-qt4 /usr/include/KDSoapServer/KDSoapThreadPool.h
kdsoap-qt4 /usr/lib/
kdsoap-qt4 /usr/lib/libkdsoap-server.so
kdsoap-qt4 /usr/lib/libkdsoap-server.so.1
kdsoap-qt4 /usr/lib/libkdsoap-server.so.1.4
kdsoap-qt4 /usr/lib/libkdsoap-server.so.1.4.0
kdsoap-qt4 /usr/lib/libkdsoap.so
kdsoap-qt4 /usr/lib/libkdsoap.so.1
kdsoap-qt4 /usr/lib/libkdsoap.so.1.4
kdsoap-qt4 /usr/lib/libkdsoap.so.1.4.0
kdsoap-qt4 /usr/share/
kdsoap-qt4 /usr/share/doc/
kdsoap-qt4 /usr/share/doc/KDSoap/
kdsoap-qt4 /usr/share/doc/KDSoap/LICENSE.GPL.txt
kdsoap-qt4 /usr/share/doc/KDSoap/LICENSE.US.txt
kdsoap-qt4 /usr/share/doc/KDSoap/LICENSE.txt
kdsoap-qt4 /usr/share/doc/KDSoap/README.txt
kdsoap-qt4 /usr/share/doc/KDSoap/kdsoap.pri
kdsoap-qt4 /usr/share/doc/KDSoap/kdwsdl2cpp.pri
kdsoap-qt4 /usr/share/mkspecs/
kdsoap-qt4 /usr/share/mkspecs/features/
kdsoap-qt4 /usr/share/mkspecs/features/kdsoap.prf

if I copy kdsoap.pri in a project and I set KDSOAPDIR=/usr the build fail, because of this:

https://github.com/KDAB/KDSoap/blob/master/kdsoap.pri#L44

kdwsdl2cpp.pri is searched in /usr but it is in "/usr/share/doc/KDSoap/kdwsdl2cpp.pri".

the problem is solved changing the above line in:

include($$KDSOAPDIR/share/doc/KDSoap/kdwsdl2cpp.pri)

The qt5 package instead does not respect given prefix and install in /usr/local/KDAB/KDSoap-1.4.0

pacman -Ql kdsoap
kdsoap /usr/
kdsoap /usr/local/
kdsoap /usr/local/KDAB/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/bin/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/bin/kdwsdl2cpp
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDDateTime
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDDateTime.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoap
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoap.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapAuthentication
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapAuthentication.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapClient
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapClientInterface
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapClientInterface.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapFaultException
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapFaultException.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapGlobal
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapGlobal.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapHeaders
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapJob
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapJob.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapMessage
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapMessage.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapNamespaceManager
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapNamespaceManager.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapPendingCall
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapPendingCall.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapPendingCallWatcher
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapPendingCallWatcher.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapSslHandler
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapSslHandler.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapValue
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapValue.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapClient/KDSoapValueList
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapDelayedResponseHandle
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapDelayedResponseHandle.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapServer
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapServer.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapServerAuthInterface
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapServerAuthInterface.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapServerGlobal
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapServerGlobal.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapServerObjectInterface
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapServerObjectInterface.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapThreadPool
kdsoap /usr/local/KDAB/KDSoap-1.4.0/include/KDSoapServer/KDSoapThreadPool.h
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/libkdsoap-server.so
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/libkdsoap-server.so.1
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/libkdsoap-server.so.1.4
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/libkdsoap-server.so.1.4.0
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/libkdsoap.so
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/libkdsoap.so.1
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/libkdsoap.so.1.4
kdsoap /usr/local/KDAB/KDSoap-1.4.0/lib/libkdsoap.so.1.4.0
kdsoap /usr/local/KDAB/KDSoap-1.4.0/share/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/share/mkspecs/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/share/mkspecs/features/
kdsoap /usr/local/KDAB/KDSoap-1.4.0/share/mkspecs/features/kdsoap.prf
kdsoap /usr/share/
kdsoap /usr/share/doc/
kdsoap /usr/share/doc/KDSoap/
kdsoap /usr/share/doc/KDSoap/LICENSE.GPL.txt
kdsoap /usr/share/doc/KDSoap/LICENSE.US.txt
kdsoap /usr/share/doc/KDSoap/LICENSE.txt
kdsoap /usr/share/doc/KDSoap/README.txt
kdsoap /usr/share/doc/KDSoap/kdsoap.pri
kdsoap /usr/share/doc/KDSoap/kdwsdl2cpp.pri

I not yet investigated the problem for the qt5 package, do you have hints?

WSDL HTTP binding

Hello:

We are testing KDSoap for a development project and it's fine but we need to work with WSDL HTTP binding (http://www.w3.org/TR/wsdl#_http)

do your KDSoap work with this?.

if we process an wsdl file like the one below we don't get nothing.

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:message name="MyMessage">
    <wsdl:part name="partA" type="xsd:string"/>
    <wsdl:part name="partB" type="xsd:string"/>
</wsdl:message>
<wsdl:portType name="MyPortType">
    <wsdl:operation name="MyOperation">
        <wsdl:input message="MyMessage"/>
    </wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MyBinding" type="MyPortType">
    <http:binding verb="POST"/>
    <wsdl:operation name="MyOperation">
        <wsdl:input>
            <mime:content type="application/x-www-form-urlencoded"/>
        </wsdl:input>
    </wsdl:operation>
</wsdl:binding>
<wsdl:service name="MyService">
    <wsdl:port name="Port1" binding="MyBinding">
        <http:address location="http://localhost/MyService/MyPort"/>
    </wsdl:port>
</wsdl:service>
</definitions>

./kdwsdl2cpp -o generated/example.h example.wsdl


// This file is generated by KDAB's kdwsdl2cpp from example.wsdl.
// All changes you do to this file will be lost.
/*
    You may use and relicense this generated file without restriction.
*/
#ifndef EXAMPLE_H
#define EXAMPLE_H

#endif

Thanks

nil boolean of member is true, although member is not nil

Hello,

I use code-gen of KDSoap.
Today I recognized, that there are tags missing in the soap-request (The request fails because of the missing tags). The error occurs, cause I want to use a part of the returnval of response1 in request2.

So it seems that the copy-constructor of some items does not work properly. Can you help me?

thanks

kdwsdl2cpp: element without type, element not found

I have tried to generate cpp/h files with kdwsdl2cpp and i got following error

in message "tns:vrstaVizeListRequest" : element without type: "tns:vrstaVizeListRequest"
Converting 0 simple types
Converting 28 complex types
ERROR: element not found: "tns:vrstaVizeListRequest"
ERROR: element not found: "tns:vrstaVizeListRequest"
TypeMap::localTypeForElement: unknown type "tns:vrstaVizeListRequest"
ERROR: element not found: "tns:vrstaVizeListRequest"

the wsdl file is tested with gsoap, and some online wsdl validators without errors or warnings.
can someone help me what can i try next in order to find the problem?

Generate getter returning pointer to the messageobject for better accessibility

DESCRIPTION:
KDWSDL2CPP code generator could generate pointer to the nested message object types for better accessibility and possibility to modify existing object.

USE CASE
It would be very nice to be able to do something like this:
message.list.append(new ListItem());
or
message.list.at(i).setProperty("value");
But currently the generated getter method returns a copy of the actual member so the above mentioned code does not modify the message object. Currently programmer needs to reconstruct the whole message if a modification is needed inside the message.

PROPOSED SOLUTION:
The code generator could generate a getter method for complextypes for instance:
propertyType* propertyname_ptr()
{
return &propertyname;
}

or possibly using const reference

const propertyType& propertyname_ptr()
{
return propertyname;
}

EXAMPLE CODE: KDSoap/kdwsdl2cpp/src/converter_complextype.cpp
// pointer method, only when a complex type is used.
if (typeName.contains("__"))
{
KODE::Function pointer( mNameMapper.escape( lowerName ) + QLatin1String("_ptr"), typeName + QLatin1String("*"));
pointer.setBody( QLatin1String("return &") + variableName + QLatin1Char(';') );
pointer.setConst(false);
newClass.addFunction(pointer);
}

Unable to generate cpp from wsdl

wsdl here:

http://www.axis.com/vapix/ws/action1/ActionService.wsdl

kdwsdl2cpp -o test_wsdl.h ActionService.wsdl 
importing schema at http://docs.oasis-open.org/wsn/b-2.xsd
Downloading 'http://docs.oasis-open.org/wsn/b-2.xsd'
Download successful
importing schema at http://www.w3.org/2005/08/addressing/ws-addr.xsd
Downloading 'http://www.w3.org/2005/08/addressing/ws-addr.xsd'
Download successful
importing schema at http://docs.oasis-open.org/wsrf/bf-2.xsd
Downloading 'http://docs.oasis-open.org/wsrf/bf-2.xsd'
Download successful
importing schema at http://www.w3.org/2001/xml.xsd
Downloading 'http://www.w3.org/2001/xml.xsd'
Download successful
<complexContent>: No support for mixed=true
importing schema at http://docs.oasis-open.org/wsn/t-1.xsd
Downloading 'http://docs.oasis-open.org/wsn/t-1.xsd'
Download successful
WARNING: no service tags found. There is nothing to generate!

soapui can generate the requests

KDSoap does not produce moc_ files when using a shadow build setup

When I build KDSoap (no modifications locally whatsoever) using shadow build, the project fails at the following first error:

KDSoap/kdwsdl2cpp/common/fileprovider.cpp:104: error: moc_fileprovider.cpp: No such file or directory
#include "moc_fileprovider.cpp"

QMake was run prior to building the project. When searching for the file moc_fileprovider.cpp, it does not seems to exist anywhere

When building regularly (no shadow build) the build completes and the file moc_fileprovider.cpp is located at:
KDSoap/kdwsdl2cpp/common/.moc/moc_fileprovider.cpp

QEventLoop: Cannot be used without QApplication

On QT 4.8.1 Windows 7 x64 i got an error to call an async service soap from client.

Works well in Ubuntu ...

Error:
QEventLoop: Cannot be used without QApplication
QObject::connect: Cannot connect (null)::aboutToQuit() to QNativeWifiEngine::clo
seHandle()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.