Web Services

Syndicate content 13 

Hello experts,

I'm new to InterSystems software and still not so familiar with it. Therefore I do apologize in front if this question is irrelevant, not making sense or answer is commonly known.
 

I've did my best in search for answer, but unfortunately i haven't found anything helpfull. So I decided to ask for help here.

 

My problem is repetitive error which occure in CSP Gateway event log : 

Error Condition: Failed to read posted content from the client (Content-Length: 1404; Data Actually Read: 0; Read Error: 70007)

It occure approximately 40 times a day. Customers do not report any specific problems, but it's still in my concern to solve errors.

 

I was looking for explanation of error in various documentations : 
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCGI_oper_config

0   0 1
0

answers

0

comments

23

views

0

rating

Hi

We have just completed a migration of a test environment from Ensemble 2012 to Ensemble 2017 on a new server. This is the last in a series of migrations but the first to encounter this particular issue. All web clients making SOAP requests to a particular external web service are receiving a fault that states:

The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://<expected target service action follows here>'.

Further investigation using ^ISCSOAP and a comparison with other working environments reveals that the SOAP request is completely missing the <SOAP-ENV:Header> element.

This absence of a SOAP header occurs for multiple Operations in more than one Namespace for this newly migrated server, yet it is present in every other environment, all of which use the same source code.

So, is there a single installation-wide setting that could be causing this behaviour

Last answer 22 March 2019
0   0 1
0

comments

37

views

0

rating

Hi All,
 How to create Https request with Negotiate,NTLM Authentication in cache using %Net.HttpRequest package.
 I tried with basic authentication it is throwing >401 - Unauthorized: Access is denied due to invalid credentials.
 
 can anyone please guide me 
 
 Many Thanks !!
 Vicky

Last answer 15 March 2019 Last comment 15 March 2019
0   0 3
60

views

0

rating

ˮ This is one of my articles which was never published in English. Let's fix it!

Hello! This article is about quite a practical way of developing InterSystems solutions without using the integrated tools like Studio or Atelier. All the code of the project can be stored in the form of "traditional" source code files, edited in your favorite development environment (for example, Visual Studio Code), indexed by any version control system and arbitrarily combined with many external tools for code analysis, preprocessing, packaging and so on

Last comment 2 March 2019
+ 6   5 3
721

views

+ 6

rating

I'm trying to test SOAP integration by using one Ensemble production to send a SOAP message to another production, but I'm seeing the following error when I try to pass a message between the two:

ERROR #6248: SOAP response is a SOAP fault: faultcode=Server
faultstring=Internal Server Error
faultactor=
detail=
<error xmlns="http://tempuri.org">
<text>ERROR #7900: Service 'SOAP' not enabled for application '/csp/healthshare/hspc/'</text>
</error> 

I'm following this guide to creating a service, and I've done the following steps which I expected to enable SOAP

Last answer 23 February 2019 Last comment 25 February 2019
0   0 4
74

views

0

rating

I have an imported WSDL from SalesForce and I am trying to send a login-request to the SalesForce-servers via InterSystems. The login requires a username and a password in the body, and an organizationId in the header. I am having trouble filling the organizationId in the header.

Via SoapUI I can send a successfull message to the SalesForce-servers. The message should look like this

Last answer 17 August 2017 Last comment 22 February 2019
0   0 2
946

views

0

rating

Hi guys,

 

Couple days ago, a customer approached me with the wish to enhance their existing legacy application, that uses SOAP (Web)Services so it shares the same authorization with their new application API based on REST. As their new application uses OAuth2, the challenge was clear; how to pass access token with SOAP request to the server.

After spending some time on Google, it turned out, that one of possible ways of doing so was adding an extra header element to the SOAP envelope and then making sure the WebService implementation does what is needed to validate the access token.

+ 2   0 1
0

comments

212

views

+ 2

rating

I want to consume external websocket api, URL looks like this:

wss://site.com/ws/v2/?&token=<token>

Checked with external tool (Simple WebSocket Client) that websocket works and I can consume the data.

In Cache the relevant functionality is offered by %IO.Socket class.

set sock = ##class(%IO.Socket).%New()
set sock.SSLConfig = "MyEmptySSLConfig"
set sock.TranslationTable="UTF8"
do sock.Open("site.com/ws/v2/?&token=<token>","443", 10,.sc)

However I get this error:

ERROR #7109: Timed out after 10 seconds trying to open stream '|TCP|443|42881' [zOpen+41^%IO.Socket.1:IOT] 

Any ideas on how Cache can consume websocket API are appreciated.

Last answer 8 February 2019 Last comment 6 February 2019
0   0 3
178

views

0

rating

WebSockets as a communication technology wins increasing importance.
In the SAMPLES namespace, you find a nice example for running a WebSocket Server.
There is also a useful example for a Browser Client. But it is still in the browser. 

My point is:
How to consume the output of a WebSocket Server in your application?

+ 6   0 0
0

comments

84

views

+ 6

rating

WebSockets as a communication technology wins increasing importance.
In the SAMPLES namespace, you find a nice example for running a WebSocket Server.
There is also a useful example for a Browser Client. JavaScript does most of the work. 

My point is:
How to consume the output of a WebSocket Server in your application?

+ 7   0 0
0

comments

101

views

+ 7

rating

There are often questions surrounding the ideal Apache HTTPD Web Server configuration for HealthShare.  The contents of this article will outline the initial recommended web server configuration for any HealthShare product. 

As a starting point, Apache HTTPD version 2.4.x (64-bit) is recommended.  Earlier versions such as 2.2.x are available, however version 2.2 is not recommended for performance and scalability of HealthShare.

+ 12   5 3
0

comments

408

views

+ 12

rating

Hello Cache Developers:  I was curious if anyone has ever created a TWAIN interface to their Cache Application?   I am new to TWAIN and hence the reason for this question.  From what I understand, TWAIN is software used by various digital imaging software and TWAIN provides an API for applications to call to be able to import images into their application.   I work with a healthcare application and was wondering what types of things are required for a Cache Web Application to call the TWAIN API to be able to load images into a Cache table.    Any input, sample code, or suggestions is appreciated.   Thanks and Have a Great Day!    Happy Coding.

Last answer 27 January 2019 Last comment 29 January 2019
+ 1   0 3
117

views

+ 1

rating

I'm writing a SOAP client in Ensemble (2017.2.2) that is required to pass empty elements to the SOAP server in the form <xsi:type="ns:ResponsibleUser"/> where ResponsibleUser is a class that itself has no properties. I initially thought I'd found the answer with the XMLIGNORENULL parameter of XML enabled classes but this didn't make any difference for SOAP requests, only working when I wrote the XML to a file. Then I came across the XMLIGNORENULL parameter for the SOAP client class (inherited from %SOAP.WebBase), but this only works for %String properties and not for properties of arbitrary class types.

Is there a way to force the output of an empty object-valued property as an empty element in a SOAP request?

Thanks in advance for any guidance

Last answer 15 January 2019
0   0 1
0

comments

97

views

0

rating

I am trying to explore some new possibilities outside of the normal day to day HL7 interfacing we do. I have only done 1 other Web Service interface but it was using a SOAP proxy wizard. Now I am tasked with trying to make a call to an external API 

https://npiregistry.cms.hhs.gov/api/

but I am a bit confused about how to go about doing it. Since they don't have a wsdl, this means it is a REST web service correct? or is it considered an API call? When I read the documentation it feels like it is more geared to building REST services/operations within Ensemble then connecting to one on the outside, am I missing something here.

Can someone help clarify this for me?

Is a API considered a Web Service? 

Am I missing something in the Documentation?

Thanks 

Scott

Last answer 1 December 2018
+ 3   2 5
360

views

+ 3

rating

The following code walks a DOM using %XML.Node. It also prevents %XML.Writer to change whitespace. Run the code using the class method "test":


Class objectscript.walkDOM Extends %Persistent
{
    ClassMethod dfs(node As %XML.Node)
    {
        s entrynode=node.NodeId
        do {
        //element nodes with one whitespacetyped child are the ones we want to change
        if (node.NodeType=$$$xmlELEMENTNODE){
            s snode=node.NodeId     
            if (node.MoveToFirstChild())            
                {
                    i ('node.MoveToNextSibling()){
                        i (node.NodeType=$$$xmlWHITESPACENODE){
                            s node.NodeType=$$$xmlTEXTNODE
                            s node.NodeId=snode
                        }
                    }
            }
            s node.NodeId=snode     
        }   
        if (node.HasChildNodes()){
            d node.MoveToFirstChild()
            d ..dfs(node)
        }
        } while (node.NodeType'="" && node.MoveToNextSibling())
        s node.NodeId=entrynode
         
    }
     
    ClassMethod test()
    {
      set xml = "abcdefg"
     
      s reader=##class(%XML.Reader).%New()
      do reader.OpenString(xml)  
      set writer = ##class(%XML.Writer).%New()
      //do some magic
      d ..dfs(reader.Document)
       
      w !,"with indent=1:",!
      set writer.Indent = 1
      do writer.OutputToString()
      do writer.Document(reader.Document)
      w writer.GetXMLString()
      set writer.Indent = 0
      w !,"with indent=0:",!
      do writer.OutputToString()
      do writer.Document(reader.Document)
      w writer.GetXMLString()
    }
}

Here's a link to the code on GitHub: https://github.com/intersystems-community/code-snippets/blob/master/src/...

0   0 2
0

comments

73

views

0

rating

Hello,

I'm trying to use Websockets and understand how it works. To do so, I tried to follow the sample in here :

https://github.com/intersystems-ru/WebSocketsSample

I opened studio, connected to my server into the USER namespace and use the Tools -> Import Local in order to add the 3 files (app.js.xml, index.html.xml and WebSockets.Main.cls )

I compile without error and use the View -> Web Page and it doesn't work as expected 

I can't see here what's the issue. Does anyone have some ideas ?

Thank you very much.

Jean Baptiste

Last answer 11 December 2018
0   0 2
0

comments

94

views

0

rating

Hi All,

Actually, I'm developing few restful API's. I want to create a authentication tokens and display it on my login restful API. If I'm using CSP sessionId, how can I validate the session Id's in another or continues restful API's. else, is there any other approach to handle this task. 

My Primary goal is, I have to integrate 2 different front end applications. One is Zen framework another one is web pages from Python. 

If any lead, it would be appreciated. 

Thanks,

Arun Kumar Durairaj. 

0   0 1
0

answers

0

comments

104

views

0

rating

404 Not Found

{
"error": {
 "errors": [
  {
   "domain": "global",
   "reason": "notFound",
   "message": "Not Found"
  }
 ],
 "code": 404,
 "message": "Not Found"
 }
}

I want to do something like the above sample from a Google Storage JSON API. I have a call to Write obj.%ToJSON() followed by return ..ReportHttpStatusCode(..#HTTP404NOTFOUND) however the HTTP Status code is always 200.  If I remove the Write obj.%ToJSON() statement it returns a 404 status with no body. How do I return both?

Last answer 19 September 2018
0   0 3
0

comments

221

views

0

rating

Hi, 

Connections/ SOAP Operations to 3rd Parties can hold some challenges like the 3rd party changes it 's structures/ WSDL  and returns an additional property in a SOAP response. So I have tried to implement the XMLIGNOREINVALIDTAG in the proxy SOAP response structures , but in Ensemble this seems to get ignored.

Are there any good suggestions on how to handle this an ideal would have been that the other party inform you of changes before hand....

Or we can ignore the tags, and inform the operations of such problems but the rest of the response message is valid and could be processed

Best regards

Last comment 11 September 2018
0   0 2
0

answers

102

views

0

rating

I faced with the issue when WebSocket connection just fails without any errors if I send data with size 384 bytes and more (In binary mode the same). As I know by standard WebSockets frame does not have such limitation. Is there any way how to decrease it? This limitation too small, it is too difficult to fit this size and needs to send data much more often than I expected. Tested with Caché 2016.2, 2017.2 and IRIS 2018.1.

Last answer 6 September 2018 Last comment 5 September 2018
+ 1   0 2
203

views

+ 1

rating

Does anyone have any experience with getting, unfortunately, an older version of Cache to authenticate via SMTP to send email? I have verified that the settings are set up properly on the mailbox as I have successfully sent an email from a LAMP server, which comes from the same IP address.

If you have any thoughts, I would greatly appreciate it.

 

This is the error I receive

ERROR #6034: SMTP server connection failed during MAIL FROM command: <READ>zSend+105^%Net.SMTP.1.

when I run the following

Last answer 26 August 2018 Last comment 25 August 2018
0   0 4
986

views

0

rating

Hi,

is there a way to tell Caché to ignore the order of elements when hosting a SOAP-based webservice?

At the moment I keep getting the Error-Code #6237 (Unexpected tag in XML input) when the request is not in the exact same order as defined.

Looking forward for your answers.

Regards,

Thomas

Last answer 30 July 2018 Last comment 31 July 2018
0   0 2
139

views

0

rating

I am doing an implementation of a SAML 2.0 SingleSignOn protocol integration which requires a signed message with the signature element in the body of the SOAP message, not the header as is default SOAP security handling. Any suggestions for how to do this would be greatly appreciated. When it is passed in the header, it is not processed by our partner and we just get a "Signature Required" response. Presumably I will have to go through the steps outlined in Signing XML Documents but I am not sure the best place within the outbound web-client flow in which to do this. Any suggestions would be greatly appreciated.

The specification for the particular message I am trying to send is very simple (below), but note the signature element is the same xmlns the %XML.Security.Signature is a projection of

0   0 2
0

answers

0

comments

130

views

0

rating

Hi

we are trying to call a Webservice that is hosted on a Ensemble production from a .net program.

The web application in ensabmle is defined with password authntication 

we can't get to set the security header in the .net program  (<soapenv:Header> ... <wsse:Security ... <wsse:UsernameToken  ... ) in SoapUI we added the Wss usertoken and it worked like a charm.

Doe's anyone have a idea to guide us? (links,  ,samples, etc. )

Thanks

Gadi

0   0 2
0

answers

0

comments

91

views

0

rating

I cannot connect to Cache from node.js  

I have installed in Windows 10 the following: CACHE 2016, node.js v 4.4.7 and  express .

-  where can I get cache.node? The link in the Intersystmes documentation  http://globalsdb.org/downloads/  doesn't work. I found cache0100.node and cache0120.node  in my Cache instance's  \bin directory. But I am not sure if I can use them or not.

 - how to install cache.node ? Where do I place it exactly? 

Can anyone recommend any tutorial or code example with installation instructions?

Thank you!

Last answer 10 September 2016 Last comment 4 July 2018
+ 1   1 8
1984

views

+ 1

rating