How to configure "HTTP_request_configuration" in Anypoint Studio? - configuration

I am using Anypoint 6.2.3 and I am trying to call an api baconipsum.com/api/?type=meat-and-filler for that, my project flow is
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="9000" doc:name="HTTP Listener Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="baconipsum.com" doc:name="HTTP Request Configuration" basePath="api" port="8081"/>
<flow name="test2Flow1" >
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<http:request config-ref="HTTP_Request_Configuration" path="/" method="GET" doc:name="HTTP" >
<http:request-builder>
<http:query-param paramName="type" value="#[message.inboundProperties.'http.query.params'.type]"/>
<http:query-param paramName="sentences" value="#[message.inboundProperties.'http.query.params'.sentences]"/>
</http:request-builder>
</http:request>
<file:outbound-endpoint path="C:/Users/arpit_jain2/Desktop/Response" outputPattern="res.json" responseTimeout="10000" doc:name="File"/>
</flow>
and the HTTP_Request_Configuration is
HTTP_Request_Configuration
In the documentation of MuleSoft, port number is not assigned and it is working fine but when I implement the same configuration I get the error.
Value for port must be provided
Does anyone know what should be the port and why I am getting null payload error.
Error while calling the API
Am I missing something in the Anypoint configuration or in the HTTP_Request_Configuraion?

Default port for http is 80. So set port="80"
You have set to 8081 and http://baconipsum.com/api/?type=meat-and-filler is listening on 80(default) not 8081

Please set port = 80 in your HTTP Request Config.

Here two changes that you can try.
1.Change your basePath="api" to basePath="/api" and try it. And
2.Try without adding any port as you mentioned baconipsum.com/api/?type=meat-and-filler.
If still you are facing the issue then post the complete error details that you are getting.

Related

Google Omaha installer hangs

I'm trying to get Google Omaha to work, and even though I feel I'm really close for some reason it is not.
I've read the few guides and tutorials available online for it and finally managed to get the client built. I've also installed the docker package provided by Crystalnix and as far as I can tell everything is setup as it should.
For some reason however the installation process gets stuck after the API request for the package information is made.
The last response from the server looks as follows:
<response protocol="3.0" server="prod">
<daystart elapsed_seconds="62157" elapsed_days="4372"/>
<app status="ok" appid="{XXX-XXX-XXX}">
<updatecheck status="ok">
<urls>
<url codebase="http://updates.example.com/static/media/build/Product/stable/win/78065329307666/"/>
</urls>
<manifest version="71.0.57.18">
<packages>
<package required="true" hash="6uZwsU9+WCZ1oR3ovGnFyrTCqhM=" name="install.exe" size="59309528"/>
</packages>
<actions>
<action successsaction="default" run="install.exe" event="install"/>
</actions>
</manifest>
</updatecheck>
</app>
</response>
After this request is being retried for three times the installer hangs with this error: Unable to connect to the Internet. If you use a firewall, please whitelist ProductUpdate.exe
What could the issue for this be?
LE: this is the complete Omaha log file https://pastebin.com/QALnk7X7

Direct logback logs to graylog

I have a third party java application which uses logback for logging.
I want to add a Socket Appender to the application's logback.xml as specified in the documentation
(https://logback.qos.ch/manual/appenders.html)
<configuration debug="true">
<appender name="SERVER"
class="ch.qos.logback.classic.net.server.ServerSocketAppender">
<port>${port}</port>
<includeCallerData>${includeCallerData}</includeCallerData>
</appender>
<root level="debug">
<appender-ref ref="SERVER" />
</root>
</configuration>
The purpose is to direct the logs to graylog using udp end point.
Is there a way to send the logs using the UDP protocol ?
Thanks for your time.
There are multiple GELF appenders for Logback listed on the Graylog Marketplace:
https://marketplace.graylog.org/addons?tag=logback
Personally, I'd recommend using logstash-gelf.
I created a TCP Socket Server application (say on port 1234 running on localhost).
I added a socket appender to the logback.xml of the third party application to send logs to the TCP Server application.
<appender name="SOCKET" class="ch.qos.logback.classic.net.SocketAppender">
<remoteHost>localhost</remoteHost>
<port>1234</port>
<reconnectionDelay>10000</reconnectionDelay>
<includeCallerData>true</includeCallerData>
</appender>
Now, on the Socket server application, I added the logstash-gelf dependency and appender that joschi recommended.
Now the logs from the third party application go thru a hop and then reach Graylog.
The one caveat that I had to get around was to determine the severity of the log from the log message before logging it again in the socket server application.

Mule SMTP not sending any mails

I have configured the outbound endpoint to the best of my knowledge but still the component is not able to send any mail.
I am using the latest Studio 3.7 to develop and the latest run-time
<smtp:outbound-endpoint host="smtp.gmail.com" port="465" user="aaa%40gmail.com" password="password" connector-ref="Gmail" to="zhk%40gmail.com" from="aaa%40gmail.com" subject="TestMessage" responseTimeout="10000" doc:name="SMTP" mimeType="text/plain" bcc="xyz%40gmail.com" cc="xyz%40gmail.com">
<reconnect/>
</smtp:outbound-endpoint>
Please note that this does not throw any errors .
<smtp:gmail-connector name="Gmail" contentType="text/plain" validateConnections="true" doc:name="Gmail"/>
<smtp:outbound-endpoint host="${smtp.host}" port="${smtp.port}" user="${smtp.from.address}" password="${smtp.from.password}"
to="${smtp.to.address}" from="${smtp.from.address}" subject="${mail.success.subject}" responseTimeout="10000"
doc:name="SuccessEmail" connector-ref="Gmail"/>
smtp.host=smtp.gmail.com
smtp.port=587
smtp.from.address=youremail%40gmail.com
smtp.from.password=yourpassword
smtp.to.address=yourtoaddress#gmail.com
I think the port 587 should do the trick
This configuration is a tested/working configuration :)
On the security tab of your SMTP component, enable SMTPS. Then try again.
If won't work, try removing '#gmail.com' on your user.

WSO2 ESB: suspended anonymousendpoint

I am working on WSO2 ESB 4.8.1 and facing an issue regarding to suspended anonymous endpoint. The scenario is: TCP/IP transport receiver (custom one) -> Proxy -> invoke HTTP endpoint.
At the startup runtime, my custom transport receiver will connect to another machine by using TCP/IP protocol and start listener message event. When message event come, the transport receiver will format the message event as JSON format and send it to predefined Proxy (This step is working well even though suspended anonymous endpoint has been occurred). The implement in side the proxy is really simple, just send to HTTP endpoint:
<property name="messageType" value="application/json" scope="axis2" />
<property name="Accept" scope="transport" value="application/json" />
<payloadFactory media-type="json">
<format>$1</format>
<args>
<arg evaluator="json" expression="$.eventMessage" />
</args>
</payloadFactory>
<call>
<endpoint>
<http method="post" uri-template="http://localhost:9080/goal"></http>
</endpoint>
</call>
The process is working fine except the suspended anonymous endpoint has happened (Such as the HTTP endpoint is shutdown), then i am able to see a log message as below:
WARN {org.apache.synapse.endpoints.EndpointContext} - Suspending endpoint : AnonymousEndpoint - current suspend duration is : 30000ms - Next retry after : Tue Oct 28 17:38:23 ICT 2014
If i stop the request traffic at the transport receiver and restart the HTTP endpoint, after 30 ms the endpoint can back to service
In case request traffic at the transport receiver still running, i saw the log message above is displayed few times and then the ESB server don't log that message anymore. At this time, the HTTP endpoint is suspended and never come back to service except restarting ESB server
I also saw this log message:
WARN {org.apache.synapse.core.axis2.TimeoutHandler} - Expiring message ID : urn:uuid:5dcedb38-3f9a-4a75-a201-ae4e76428216; dropping message after global timeout of : 120 seconds
That is really strange for me and i wonder if i did something wrong here. I really need your suggestion guys
Best regards,
An
Use a named endpoint and configure suspension and timeout, have a look there : https://docs.wso2.com/display/ESB481/Endpoint+Error+Handling
If you don't want to loose any message and if your http endpoint can be down for a long time for exemple, you should consider using guaranteed delivery with message Store and message Processor, have a look there : https://docs.wso2.com/display/IntegrationPatterns/Guaranteed+Delivery

The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'NTLM’

I have an ASP.NET web application written in VB.NET. One part of the application makes an AJAX call to an internal ASMX file which in turn makes a call to a remote web service which is just a single ASMX file. Normally this works fine and has been deployed a couple of times and works fine. One client however, is getting the message from the AJAX call:
The HTTP request is unauthorized with client authentication scheme
'Anonymous'. The authentication header received from the server was
'NTLM’.
I have scoured a large amount of websites trying to fix this but I can’t seem to find any answer that works for me.
I have been unable to replicate the error on my test server, which is the same as the client, Win2003 IIS6.
The remote web service is deployed on Windows 2008 r2 – IIS7.5. The remote service is deployed using ‘Anonymous’ authentication only. The client deployment is set up with Anonymous and ‘Integrated Windows Authentication’. I have tried changing the authentication levels on both implementations but cannot replicate the issue. The closest I have come is when I set the remote service IIS authentication to
The HTTP request is unauthorized with client authentication scheme
'Ntlm'. The authentication header received from the server was ''.
In the web.config file the reference to the remote service is:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="SVCMappingSoap" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://svc.website.com/services/myService.asmx" binding="basicHttpBinding" bindingConfiguration="SVCMappingSoap" contract="SVCMappingService.SVCMappingSoap" name="SVCMappingSoap"/>
</client>
</system.serviceModel>
I have tried changing a number of the setting in the <security> section but still unable to replicate.
I am not sure of your total server setup.
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
</security>
instead of above one please try with below configuration
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
please go through below links, you can more idea on those and you can change the config based on your requirements:
http://blogs.msdn.com/b/publicsector/archive/2005/10/19/482833.aspx
http://fczaja.blogspot.com/2009/10/http-request-is-unauthorized-with.html
http://ddkonline.blogspot.com/2009/11/fix-http-request-is-unauthorized-with.html
I had to change the default generated
<security mode="Transport"/>
into
<security mode="Transport" >
<transport clientCredentialType="Ntlm"/>
</security>
One more comment for this problem:
If you are not using HTTPS,
<security mode="Transport"/>
is not supported. You can use
<security mode="TransportCredentialOnly">
instead.