<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/index.php?action=history&amp;feed=atom&amp;title=Java_Example</id>
	<title>Java Example - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/index.php?action=history&amp;feed=atom&amp;title=Java_Example"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Java_Example&amp;action=history"/>
	<updated>2026-05-06T09:21:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Java_Example&amp;diff=25400&amp;oldid=prev</id>
		<title>Neofutur: Created page with &quot;&lt;source lang=&quot;java&quot;&gt;  package com.mtgox.api;  import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.lo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Java_Example&amp;diff=25400&amp;oldid=prev"/>
		<updated>2012-04-16T09:06:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;  package com.mtgox.api;  import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.lo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package com.mtgox.api;&lt;br /&gt;
&lt;br /&gt;
import java.net.HttpURLConnection;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import java.net.URLEncoder;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.logging.Level;&lt;br /&gt;
import java.util.logging.Logger;&lt;br /&gt;
import javax.crypto.Mac;&lt;br /&gt;
import javax.crypto.spec.SecretKeySpec;&lt;br /&gt;
import sun.misc.BASE64Decoder;&lt;br /&gt;
import sun.misc.BASE64Encoder;&lt;br /&gt;
&lt;br /&gt;
public class Client {&lt;br /&gt;
    protected String key;&lt;br /&gt;
    protected String secret;&lt;br /&gt;
    &lt;br /&gt;
    /**&lt;br /&gt;
* @param args the command line arguments&lt;br /&gt;
*/&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Client client = new Client(&lt;br /&gt;
                &amp;quot;your key here&amp;quot;,&lt;br /&gt;
                &amp;quot;your secret here&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
        HashMap&amp;lt;String, String&amp;gt; query_args = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
        query_args.put(&amp;quot;currency&amp;quot;, &amp;quot;BTC&amp;quot;);&lt;br /&gt;
        query_args.put(&amp;quot;amount&amp;quot;, &amp;quot;5.0&amp;quot;);&lt;br /&gt;
        query_args.put(&amp;quot;return_success&amp;quot;, &amp;quot;https://mtgox.com/success&amp;quot;);&lt;br /&gt;
        query_args.put(&amp;quot;return_failure&amp;quot;, &amp;quot;https://mtgox.com/failure&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        client.query(&amp;quot;1/generic/private/merchant/order/create&amp;quot;, query_args);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public Client(String key, String secret) {&lt;br /&gt;
        this.key = key;&lt;br /&gt;
        this.secret = secret;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String query(String path, HashMap&amp;lt;String, String&amp;gt; args) {&lt;br /&gt;
        try {&lt;br /&gt;
            // add nonce and build arg list&lt;br /&gt;
            args.put(&amp;quot;nonce&amp;quot;, String.valueOf(System.currentTimeMillis()));&lt;br /&gt;
            String post_data = this.buildQueryString(args);&lt;br /&gt;
            &lt;br /&gt;
            // args signature&lt;br /&gt;
            Mac mac = Mac.getInstance(&amp;quot;HmacSHA512&amp;quot;);&lt;br /&gt;
            SecretKeySpec secret_spec = new SecretKeySpec((new BASE64Decoder()).decodeBuffer(this.secret), &amp;quot;HmacSHA512&amp;quot;);&lt;br /&gt;
            mac.init(secret_spec);&lt;br /&gt;
            String signature = (new BASE64Encoder()).encode(mac.doFinal(post_data.getBytes()));&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            // build URL&lt;br /&gt;
            URL queryUrl = new URL(&amp;quot;https://mtgox.com/api/&amp;quot; + path);&lt;br /&gt;
            &lt;br /&gt;
            // create connection&lt;br /&gt;
            HttpURLConnection connection = (HttpURLConnection)queryUrl.openConnection();&lt;br /&gt;
            connection.setDoOutput(true);&lt;br /&gt;
            // set signature&lt;br /&gt;
            connection.setRequestProperty(&amp;quot;User-Agent&amp;quot;, &amp;quot;Mozilla/4.0 (compatible; Java Test client)&amp;quot;);&lt;br /&gt;
            connection.setRequestProperty(&amp;quot;Rest-Key&amp;quot;, this.key);&lt;br /&gt;
            connection.setRequestProperty(&amp;quot;Rest-Sign&amp;quot;, signature.replaceAll(&amp;quot;\n&amp;quot;, &amp;quot;&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
            // write post&lt;br /&gt;
            connection.getOutputStream().write(post_data.getBytes());&lt;br /&gt;
            &lt;br /&gt;
            // read info&lt;br /&gt;
            byte buffer[] = new byte[16384];&lt;br /&gt;
            int len = connection.getInputStream().read(buffer, 0, 16384);&lt;br /&gt;
            System.out.print(new String(buffer, 0, len, &amp;quot;UTF-8&amp;quot;));&lt;br /&gt;
        } catch (Exception ex) {&lt;br /&gt;
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
        return &amp;quot;foo&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected String buildQueryString(HashMap&amp;lt;String, String&amp;gt; args) {&lt;br /&gt;
        String result = new String();&lt;br /&gt;
        for (String hashkey : args.keySet()) {&lt;br /&gt;
            if (result.length() &amp;gt; 0) result += &amp;#039;&amp;amp;&amp;#039;;&lt;br /&gt;
            try {&lt;br /&gt;
                result += URLEncoder.encode(hashkey, &amp;quot;UTF-8&amp;quot;) + &amp;quot;=&amp;quot;&lt;br /&gt;
                        + URLEncoder.encode(args.get(hashkey), &amp;quot;UTF-8&amp;quot;);&lt;br /&gt;
            } catch (Exception ex) {&lt;br /&gt;
                Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return result;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Neofutur</name></author>
	</entry>
</feed>