# IHttpNegotiate

During a bind operation, the moniker can obtain some additional bind information by calling the bind client’s IBindStatusCallback::GetBindInfo. In some cases, additional callback interfaces can be provided by the client requesting the bind operation to supply even more services to the moniker performing the bind. These additional interfaces are typically requested by the moniker calling IBindStatusCallback::QueryInterface for the interface desired. However, a moniker client can also provide additional interfaces through IServiceProvider.

In the case of URL monikers, the IHttpNegotiate interface is an additional callback interface that the client can provide.

##### When to Implement

Clients of URL monikers that want to participate in HTTP negotiations that take place when binding to HTTP URLs can implement this interface. The clients can then add headers to HTTP requests and can examine HTTP response headers.

Note that not all header types are currently supported. Specifically, clients should not add Content Length or Accept headers to HTTP requests. Instead of adding Accept headers, the client can call RegisterFormatEnumerator to specify accepted types for a bind operation.

Note that this callback interface can be provided by multiple clients of an HTTP bind operation. Each client can participate in the HTTP negotiation process by looking at existing request headers and adding new ones.

##### When to Use

The URL moniker calls this interface when bind operation requires HTTP negotiation. To get a pointer to this interface, the moniker calls the client’s IBindStatusCallback::QueryInterface.

Methods in Vtable Order

IUnknown Methods | Description
QueryInterface | Returns pointers to supported interfaces.
AddRef | Increments the reference count.
Release | Decrements the reference count.

IHttpNegotiate Methods | Description
BeginningTransaction | Notifies a client of a URL being bound to at the beginning of the HTTP transaction.
OnResponse | Notifies a client upon receiving a response to an HTTP request.

See Also

IWindowForBindingUI, IWinInetInfo