

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Membuat Permintaan HTTP ke Amazon SWF
<a name="UsingJSON-swf"></a>

Jika Anda tidak menggunakan salah satunya AWS SDKs, Anda dapat melakukan operasi Amazon Simple Workflow Service (Amazon SWF) melalui HTTP menggunakan metode permintaan POST. Metode POST mengharuskan Anda menentukan operasi di header permintaan dan memberikan data untuk operasi dalam format JSON dalam isi permintaan. 

## Konten Header HTTP
<a name="HTTPHeader"></a>

Amazon SWF membutuhkan informasi berikut di header permintaan HTTP:
+ `host` Endpoint Amazon SWF. 
+ `x-amz-date`Anda harus memberikan cap waktu baik di `Date` header HTTP atau AWS `x-amz-date header` (beberapa perpustakaan klien HTTP tidak mengizinkan Anda mengatur `Date` header). Saat header `x-amz-date` ada, sistem mengabaikan header `Date` saat mengautentikasi permintaan.

  Tanggal harus ditentukan dalam salah satu dari tiga format berikut, seperti yang ditentukan dalam HTTP/1.1 RFC:
  + Min, 06 Nov 1994 08:49:37 GMT (RFC 822, diperbarui oleh RFC 1123)
  + Min, 06-Nov-94 08:49:37 GMT (RFC 850, diusangkan oleh RFC 1036)
  + Sun 6 Nov 08:49:37 1994 (format asctime() ANSI C)
+ `x-amzn-authorization` Permintaan ditandatangani dalam format:

  ```
  AWS3 AWSAccessKeyId=####,Algorithm=HmacSHA256, [,SignedHeaders=Header1;Header2;...]
  Signature=S(StringToSign)
  ```

  `AWS3`— Ini adalah tag AWS khusus implementasi yang menunjukkan versi otentikasi yang digunakan untuk menandatangani permintaan (saat ini, untuk Amazon SWF nilai ini selalu). `AWS3`

  `AWSAccessKeyId`— ID Kunci AWS Akses Anda.

  `Algorithm`— Algoritma yang digunakan untuk membuat nilai HMAC-SHA dari string-to-sign, seperti atau. `HmacSHA256` `HmacSHA1`

  `Signature`— Base64 (Algoritma ( StringToSign, SigningKey )). Untuk detail selengkapnya, lihat [Menghitung Tanda Tangan HMAC-SHA untuk Amazon SWF](HMACAuth-swf.md)

  `SignedHeaders`— (Opsional) Jika ada, harus berisi daftar semua Header HTTP yang digunakan dalam perhitungan HttpHeaders Canonicalized. Satu karakter titik koma (;) (karakter ASCII 59) harus digunakan sebagai pembatas untuk nilai daftar. 
+  `x-amz-target` – Layanan tujuan dari permintaan dan operasi untuk data, dalam format 

  ` com.amazonaws.swf.service.model.SimpleWorkflowService. + {{<action>}} `

   Sebagai contoh, `com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain` 
+ `content-type` – Jenis kebutuhan untuk menentukan JSON dan set karakter, sebagai `application/json; charset=UTF-8`

 Berikut ini adalah contoh header untuk permintaan HTTP dalam pembuatan domain. 

```
POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1
Host: swf.us-east-1.amazonaws.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E)
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/json; charset=UTF-8
X-Requested-With: XMLHttpRequest
X-Amz-Date: Fri, 13 Jan 2012 18:42:12 GMT
X-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain
Content-Encoding: amz-1.0
X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=tzjkF55lxAxPhzp/BRGFYQRQRq6CqrM254dTDE/EncI=
Referer: http://swf.us-east-1.amazonaws.com/explorer/index.html
Content-Length: 91
Pragma: no-cache
Cache-Control: no-cache

{"name": "867530902",
 "description": "music",
 "workflowExecutionRetentionPeriodInDays": "60"}
```

Berikut adalah contoh respons HTTP yang sepadan. 

```
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: application/json
x-amzn-RequestId: 4ec4ac3f-3e16-11e1-9b11-7182192d0b57
```

## Konten Isi HTTP
<a name="JSONschema"></a>

Isi permintaan HTTP berisi data untuk operasi yang ditentukan dalam header permintaan HTTP. Gunakan format data JSON untuk menyampaikan nilai-nilai data dan struktur data, secara bersamaan. Elemen dapat bersarang dalam elemen lain menggunakan notasi braket. Misalnya, hal berikut menunjukkan permintaan untuk mencantumkan semua eksekusi alur kerja yang dimulai antara dua titik yang ditentukan dalam waktu—menggunakan notasi Waktu Unix. 

```
{
 "domain": "867530901",
 "startTimeFilter":
 {
   "oldestDate": 1325376070,
	 "latestDate": 1356998399
 },
 "tagFilter":
 {
   "tag": "music purchase"
 }
}
```

## Sampel Permintaan dan Respon JSON Amazon SWF
<a name="JSONMajorExample"></a>

Contoh berikut menunjukkan permintaan ke Amazon SWF untuk deskripsi domain yang kita buat sebelumnya. Kemudian contoh menunjukkan respon Amazon SWF. 

### Permintaan POST HTTP
<a name="http-post-request"></a>

```
POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1
Host: swf.us-east-1.amazonaws.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E)
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/json; charset=UTF-8
X-Requested-With: XMLHttpRequest
X-Amz-Date: Sun, 15 Jan 2012 03:13:33 GMT
X-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.DescribeDomain
Content-Encoding: amz-1.0
X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=IFJtq3M366CHqMlTpyqYqd9z0ChCoKDC5SCJBsLifu4=
Referer: http://swf.us-east-1.amazonaws.com/explorer/index.html
Content-Length: 21
Pragma: no-cache
Cache-Control: no-cache

{"name": "867530901"}
```

### Respons Amazon SWF
<a name="swf-response"></a>

```
HTTP/1.1 200 OK
Content-Length: 137
Content-Type: application/json
x-amzn-RequestId: e86a6779-3f26-11e1-9a27-0760db01a4a8

{"configuration":
  {"workflowExecutionRetentionPeriodInDays": "60"},
 "domainInfo":
  {"description": "music",
   "name": "867530901",
   "status": "REGISTERED"}
}
```

Perhatikan protokol (`HTTP/1.1`) diikuti dengan kode status (`200`). Sebuah nilai kode `200` menunjukkan operasi yang berhasil. 

Amazon SWF tidak membuat serial nilai null. Jika parser JSON Anda diatur untuk membuat serial nilai null untuk permintaan, Amazon SWF mengabaikannya. 