p120ph37 / missing-link Goto Github PK
View Code? Open in Web Editor NEWmissing link Ant http task
License: Apache License 2.0
missing link Ant http task
License: Apache License 2.0
I find a little strange that there's so much things printed by default. I think
that in the nominal case, the useful information is the url and the response
code. If something doesn't behave correctly, then the end user could turn ant
into the verbose mode, and he can gets every info about its http request and
response.
See attached a suggested patch.
Original issue reported on code.google.com by [email protected]
on 6 May 2011 at 9:00
Attachments:
The problem lies in the URL_REGEX used by HttpClientBuilder to parse the URI
http://myserver:8081/artifactory/libs-snapshots-local/myjar/138-SNAPSHOT/myjar-1
38-SNAPSHOT.jar is accepted
http://myserver:8081/artifactory/libs-releases-local/myjar/138.0/myjar-138.0.jar
is NOT accepted, it is incorrectly parsed as
http://myserver:8081/artifactory/libs-releases-local/myjar/138.0/myjar-138?.0.ja
r (note the question mark)
This is a nasty bug made even worse by Issue 15.
java.net.URI is not perfect by any means, but even so I don't understand why
Missing Link needs to reparse the URI for itself. Surely java.net.URI can take
care of any encoding issues, and regex matching will not be necessary
Original issue reported on code.google.com by [email protected]
on 27 May 2011 at 11:20
It would be nice to be able to retrieve the contents of an entity from a
property, e.g. <entity property="artifactory.build.info"/>.
I have implemented this in a local copy but as I have incorporated in the patch
in issue 13, a patch would not be that short and sweet. Anyway, it is trivial
to implement this.
Original issue reported on code.google.com by [email protected]
on 16 Aug 2011 at 11:22
What steps will reproduce the problem?
1. Configure an Ant buildfile to POST to a URL; e.g.
<http method="POST" url="${url}"
statusProperty="status" >
<headers>
<header name="Content-Type" value="application/x-www-form-urlencoded" />
</headers>
<entity value="${entity.body}" />
</http>
2. Set the ${url} property to a 'real world' URL that returns a '303 See Other'
HTTP status code in the response.
What is the expected output? What do you see instead?
Expected:
[http] HTTP Request
[http] ********************
[http] URL: (some URL here)
[http] Method: POST
[http] Content-Type: application/x-www-form-urlencoded
[http]
[http] HTTP Response
[http] ********************
[http] Status: 303
The value of ${status} (from statusProperty="") would be expected to be set to
303, as well.
Am seeing instead:
The status value set to '200', both in the output from the HTTP post and in the
${status} value.
What version of the product are you using? On what operating system?
1.1.3, Ant 1.8.2, Java 1.6.0_16, Fedora Linux
Please provide any additional information below.
One URL you can try, that seems to always return a 303 redirect - to different
URLs - on either success or failure:
http://demo.collectionspace.org/collectionspace/ui/core/html/index.html
Original issue reported on code.google.com by [email protected]
on 19 Aug 2011 at 8:47
What steps will reproduce the problem?
1. Enter URL which contains spaces i.e.
http://example.com/some%20path/index.html
2. Run the task
What is the expected output? What do you see instead?
Expected HTTP 200 response but receive HTTP 404 response
What version of the product are you using? On what operating system?
1.1.3
Please provide any additional information below.
org.missinglink.http.client.HttpClient
596: httpClient.path = safeUri.getPath();
URI.getPath() decodes its return value. Some options are to use getRawPath() or
re-encode the full URI before it is called.
Original issue reported on code.google.com by [email protected]
on 12 Jun 2013 at 10:43
Add option to print credentials, default to false
Original issue reported on code.google.com by [email protected]
on 17 May 2011 at 9:05
API/Javadoc jar has inconsistent naming
Original issue reported on code.google.com by [email protected]
on 23 Jul 2011 at 4:03
Add support for persisting cookies in a property so they can be emitted during subsequent requests. Probably implement this as a "cookieJarProperty" attribute, which should be the name of a property that will be used to persist cookie state.
Cookie state should be persisted in a format that is at least somewhat human-readable, but still easy to serialize/deserialize.
Automate publishing of API docs to google base, to be displayed via missing
link code wordpress blog and google site
Original issue reported on code.google.com by [email protected]
on 13 Mar 2011 at 6:03
Any chance you will support nested fileset? It would be nice to run HTTP PUT
on a group of files.
Original issue reported on code.google.com by [email protected]
on 9 May 2014 at 1:57
I tend to use the Maven Ant Tasks (the thing where you can use dependency
management from within Ant, I always get the order of the word wrong) even for
the dependencies of the build system itself. It would be great if I could get
missing link this way as well.
Original issue reported on code.google.com by [email protected]
on 10 Dec 2012 at 6:12
Add proxy (with/without authentication) support
Original issue reported on code.google.com by [email protected]
on 20 Mar 2011 at 5:37
Add DIGEST authentication support
Original issue reported on code.google.com by [email protected]
on 14 Mar 2011 at 12:23
It would be nice to be able to store the result code (e.g. 200, 404) in a
property so that it can be used for controlling the subsequent flow in the Ant
script.
The same goes for the output from a request, e.g. GET.
I have implemented this in a local copy but as I have incorporated in the patch
in issue 13, a patch would not be that short and sweet. Anyway, it is trivial
to implement this.
Original issue reported on code.google.com by [email protected]
on 16 Aug 2011 at 11:20
Enable checkstyles for projects
Original issue reported on code.google.com by [email protected]
on 14 Mar 2011 at 12:16
Create test cases for http headers
Original issue reported on code.google.com by [email protected]
on 19 Mar 2011 at 12:04
What steps will reproduce the problem?
1. HTTP POST to a SSL site with an invalid certificate
What is the expected output?
No failures or exceptions
What do you see instead?
C:\mWeb2\jControl>ant http-post
Buildfile: build.xml
http-post:
[http] HTTP Request
[http] ********************
[http] URL: https://ols-mweb2.macbank:8643/mweb2_gui/api/v1/requests
[http] Method: POST
[http] Content-Type: text/xml
BUILD FAILED
org.missinglink.http.exception.HttpCertificateException:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path bui
lding failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
at org.missinglink.http.client.HttpClient.invoke(HttpClient.java:431)
at org.missinglink.ant.task.http.HttpClientTask.execute(HttpClientTask.java:316)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.Main.runBuild(Main.java:758)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
Caused by: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.S
unCertPathBuilderException: unable to find valid certification path to
requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1611)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:187)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:181)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1035)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:124)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1139)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
at org.missinglink.http.client.HttpClient.invoke(HttpClient.java:388)
... 18 more
Caused by: sun.security.validator.ValidatorException: PKIX path building
failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:294)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:200)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1014)
... 30 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable
to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:289)
... 36 more
Total time: 1 second
What version of the product are you using?
1.1.3
On what operating system?
Windows XP
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 16 Jan 2012 at 5:22
The following should output just the body of the HTTP response:
<http url="http://domain/etc"
entityProperty = "HttpResponse"
failonunexpected = "false"
printrequestheaders = "false"
printresponseheaders = "false"
/>
<echo>${HttpResponse}</echo>
Instead, it is preceeding the echo with:
[http] HTTP Request
[http] ********************
[http] URL: http://domain/etc
[http] Method: GET
[http] HTTP Response
[http] ********************
[http] Status: 200
Which is clogging up the output.
Using missing-link 1.1.3 with Ant 1.8.2
Original issue reported on code.google.com by [email protected]
on 8 Jan 2012 at 8:07
Remove depdency on sun.misc.BASE64Encoder, without introducing a third party
library dependency.
Original issue reported on code.google.com by [email protected]
on 15 Mar 2011 at 12:09
Sometimes I don't want to do a HTTP GET if the target file already exists, e.g.
I've called GET apache-tomcat.zip from Maven Repo1, I want to skip GETs for the
same resource in the future as I can guarantee it will be unchanged.
It would be good if I could specify an "update" boolean attribute when
performing GETs, e.g.
<http method="GET" url="@{url}" outfile="@{toFile}" printrequest="false"
printresponse="false" printrequestheaders="false" printresponseheaders="false"
update="@{update}"/>
Original issue reported on code.google.com by [email protected]
on 9 Aug 2011 at 1:41
If response cannot be written to disk, the IOException error message is
currently buried.
Original issue reported on code.google.com by [email protected]
on 13 Sep 2011 at 3:45
The PDF document in the codebase is an excellent guide - can the home page wiki
link to that PDF? Right now the wiki page says "TODO", which is a) off-putting
and b) misleading when so much is done!
Original issue reported on code.google.com by [email protected]
on 6 May 2011 at 9:11
What steps will reproduce the problem?
1. HTTP GET unknown URL
2. Error message says "Expected 200 but got 404", not "Expected 200 at
http://XYZ but got 404"
Having the original URL in the error message would be *enormously* useful,
especially if the task is being used in a multi-threaded scenario and Missing
Link debug is turned off
Thanks
Original issue reported on code.google.com by [email protected]
on 16 May 2011 at 1:05
We use missing-link to upload files to a server, as shown below. The first
scenario (text files) works nicely, whereas the second scenario (binary files)
works less nice...
<http url="http://server/upload.php?filename=all.txt" method="PUT">
<entity file="target/allfiles.txt" />
</http>
<http url="http://server/upload.php?filename=all.zip" method="PUT">
<entity file="target/allfiles.zip" />
</http>
A suggestion could be an attribute "binary=true" on <entity>:
<http url="http://server/upload.php?filename=all.zip" method="PUT">
<entity file="target/allfiles.zip" binary="true" />
</http>
Original issue reported on code.google.com by [email protected]
on 3 May 2011 at 12:45
What steps will reproduce the problem?
1. Make a GET request with a number of parameters listed in the url-parameter
2. Notice, that the order of the parameters have changed before sending to the
server
What is the expected output? What do you see instead?
I would expect that the HTTP request provided in the URL should be passed to
the server as given. The fact that the order of the request parameters is
altered makes it impossible to verify the request using a checksum, as the
server will calculate the checksum for the request it receives, which is
different from the one given to the ant task.
What version of the product are you using? On what operating system?
1.1.3 on Mac OS X Lion
Please provide any additional information below.
-
Original issue reported on code.google.com by [email protected]
on 8 Jun 2012 at 9:56
Included sample file has incorrect jar reference
Original issue reported on code.google.com by [email protected]
on 23 Jul 2011 at 4:01
The HTTPS <keystore> element only supports *trust stores*, not *key stores*.
This is confusing and looks to have been caused by the JSSE storage object used
by KeyManagerFactory and TrustManagerFactory being erroneously called KeyStore
and that faulty abstraction leaking into Missing Link.
We have a HTTPS server that requires both a trust store *and* a key store. We
will submit a patch soon that:
a) Renames the existing <keystore> element as <truststore>, as that is what it
is
b) Introduce a new <keystore> element with the same properties - file and
password, in case keystore and truststore are both used and do not share the
same password
c) Change HttpClient under the hood to pass keystore and/or trust store into
the JSSE SSLContext when establishing a HTTPS connection
Original issue reported on code.google.com by [email protected]
on 22 Dec 2011 at 4:58
Should have the following features for the builder:
* URI parsing
* protocol
* host
* port
* context
* extension
* query parameters
* context builder
* query parameter builder
* header builder
* have api support for specific common headers
* Accept
* Content-Type
* Media-Type
* method builder
* authentication builder
Original issue reported on code.google.com by [email protected]
on 12 Mar 2011 at 3:24
I would like to be able to do http uploads using the Content-Type:
multipart/form-data format.
Original issue reported on code.google.com by [email protected]
on 21 Nov 2014 at 3:24
Here is a small patch that accomplishes two things I needed to make a simple
REST request fly...
1. When setting the entity via text, ant does not do property expansion... what
a pain.
2. I added a some code to add a content length header if there is content and
the settcontentlengthheader attribute is set (I would have camel-cased it, but
I wanted to match your other attributes.)
Thanks for a nice, simple http client for ant!
( Patch file applies to http://missing-link.googlecode.com/svn/ant-http/trunk
rev 91 )
Original issue reported on code.google.com by [email protected]
on 8 Mar 2012 at 9:56
Attachments:
It would be nice to be able to POST files in a multipart message something like:
<http method="POST" url="someurl.php">
<query>
<parameter name="project" value="Project Name Here"/>
<parameter name="version" value="1.2.3"/>
<file name="uploadedFile" path="localfile.txt"/>
<!-- Note: the 'name' attribute should be changeable so it can
be configured to the specific forms field. -->
</query>
</http>
After I fixed ant-contrib I could do:
<postMethod multipart="true" url="http://blah/upload.php">
<text name="project" value="Project Name Here"/>
<text name="version" value="1.2.3"/>
<file name="uploaded" path="/home/blah/test.txt" contentType="text/xml;charset=utf-8"/>
</postMethod>
But I would like to use your light weight utility... especially since
ant-contrib is dead and wouldn't respond with me wanting to patch up that
functionality!
Cheers,
Randy
Original issue reported on code.google.com by [email protected]
on 17 Jan 2012 at 5:22
The recently added attribute value for entity does not work as expected. The
method isValid in class EntityNode does not respect if the value attribute has
been set. It should be something like:
public boolean isValid() {
if (null != text && text.length() > 0) {
return true;
} else if (null != file) {
return true;
} else if (null != value) {
return true;
}
return false;
}
Sorry not reporting this until now. I just assumed that this worked but a few
minutes ago a colleague spotted a 500 error in a log... :)
Original issue reported on code.google.com by [email protected]
on 14 Sep 2011 at 11:52
If I do a HTTP GET to an outFile in a directory that doesn't exist yet, I would
expect ML to attempt the creation of the parent directories, only failing the
HTTP GET if that creation is unsuccessful.
Original issue reported on code.google.com by [email protected]
on 16 Aug 2011 at 2:46
Add TravisCI integration for automatic testing.
Modify (or add new) the task to support usage inside a waitfor task
Original issue reported on code.google.com by [email protected]
on 9 Nov 2011 at 7:11
Add support for secured contexts in JSE6 embedded HTTP/HTTPS server tests
Original issue reported on code.google.com by [email protected]
on 11 Mar 2011 at 1:42
What steps will reproduce the problem?
1. Add a query with a parameter that has equal sign in the value.
<http
url="https://testorg.cs10.my.salesforce.com/services/data/v32/query/?q=SELECT
Id,Email FROM Account WHERE Email = '[email protected]'" method="GET">
What is the expected output? What do you see instead?
Expected:
[http] HTTP GET
https://testorg.cs10.my.salesforce.com/services/data/v32.0/query/?q=SELECT+Id%2C
Email+FROM+Account+WHERE+Email+%3D+%test%test.com%27
Actual:
[http] HTTP GET
https://testorg.cs10.my.salesforce.com/services/data/v32.0/query/?q=SELECT+Id%2C
Email+FROM+Account+WHERE+Email+
What version of the product are you using? On what operating system?
1.1.3 / Windows 7 / JRE 1.7
Please provide any additional information below.
Currently, only second part of the split by equal sign is used to set the value
(HttpClient.java file). I added a loop to add the rest of the values if there
are more than two parts.
The patch is attached.
Original issue reported on code.google.com by [email protected]
on 7 Apr 2015 at 1:25
Attachments:
Setup build process with local properties file based on username
* Include a sample properties file with sensitive data not included
* Build project into a single jar
* Build source jar
* Build javadocs
* Build api (javadoc) zip
* Build distribution folder with binary, source and javadocs
* Build distribution zip
Original issue reported on code.google.com by [email protected]
on 13 Mar 2011 at 6:02
It would be welcome to have the ability to save specific header values to
properties.
In particular, we'd like to save cookies and re-send them in subsequent
responses; that is, to save the value(s) of the Set-Cookie: header(s) from a
response, so we can send them in Cookie: header(s) in subsequent requests.
See related Issue 21 for further discussion.
Original issue reported on code.google.com by [email protected]
on 19 Aug 2011 at 5:54
Create test cases for ant task
Original issue reported on code.google.com by [email protected]
on 19 Mar 2011 at 12:04
Add an attribute to output response entity to a file
Original issue reported on code.google.com by [email protected]
on 19 Mar 2011 at 12:05
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.