I'm going to start by strongly recommending that you rethink your decision to PUT signed URLs. With a single PUT, any network hiccup means that you'll have to start from the beginning, which will be painful for anyone using anything slower than a Gbit network. The Java SDK provides a transfer manager that will automatically break the file into chunks, and resend any chunks that fail. Plus it gives you a progress reporter.
YES, I know that you said that you don't get API keys. But whatever is giving you a signed URL could just as easily provide you with API keys that are scoped to a single file upload.
OK, you're not going down that route. Unfortunately, you don't show the code that you're currently using to do the upload, so we have no idea what options you have available. So I'll assume that you're using the Apache Commons HttpClient, and point you at this Stack Overflow answer.